[mapguide-commits] r8719 - in branches/2.6/vagrant: . centos centos/src_update centos/test_x64 centos/test_x86 centos/x64 centos/x86 packer packer/http packer/http/centos-6.5 packer/http/ubuntu packer/http/ubuntu-12.04.5 packer/http/ubuntu-14.04 packer/scripts packer/scripts/centos packer/scripts/centos-6.5 packer/scripts/common packer/scripts/mapguide packer/scripts/ubuntu scripts sources ubuntu ubuntu/test_x64 ubuntu/test_x86 ubuntu/x64 ubuntu/x86

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Mon Jul 27 05:26:06 PDT 2015


Author: jng
Date: 2015-07-27 05:26:06 -0700 (Mon, 27 Jul 2015)
New Revision: 8719

Added:
   branches/2.6/vagrant/README.txt
   branches/2.6/vagrant/centos/src_update/
   branches/2.6/vagrant/centos/src_update/Vagrantfile
   branches/2.6/vagrant/centos/test_x64/
   branches/2.6/vagrant/centos/test_x64/Vagrantfile
   branches/2.6/vagrant/centos/test_x64/provision.sh
   branches/2.6/vagrant/centos/test_x86/
   branches/2.6/vagrant/centos/test_x86/Vagrantfile
   branches/2.6/vagrant/centos/test_x86/provision.sh
   branches/2.6/vagrant/make_boxes.bat
   branches/2.6/vagrant/md5sums.bat
   branches/2.6/vagrant/packer/
   branches/2.6/vagrant/packer/centos6-amd64.json
   branches/2.6/vagrant/packer/centos6-i386.json
   branches/2.6/vagrant/packer/http/
   branches/2.6/vagrant/packer/http/centos-6.5/
   branches/2.6/vagrant/packer/http/centos-6.5/anaconda-ks.cfg
   branches/2.6/vagrant/packer/http/ubuntu-12.04.5/
   branches/2.6/vagrant/packer/http/ubuntu-12.04.5/preseed.cfg
   branches/2.6/vagrant/packer/http/ubuntu-14.04/
   branches/2.6/vagrant/packer/http/ubuntu-14.04/preseed.cfg
   branches/2.6/vagrant/packer/http/ubuntu/
   branches/2.6/vagrant/packer/http/ubuntu/preseed.cfg
   branches/2.6/vagrant/packer/scripts/
   branches/2.6/vagrant/packer/scripts/centos-6.5/
   branches/2.6/vagrant/packer/scripts/centos-6.5/base.sh
   branches/2.6/vagrant/packer/scripts/centos-6.5/cleanup.sh
   branches/2.6/vagrant/packer/scripts/centos/
   branches/2.6/vagrant/packer/scripts/centos/virtualbox.sh
   branches/2.6/vagrant/packer/scripts/common/
   branches/2.6/vagrant/packer/scripts/common/minimize.sh
   branches/2.6/vagrant/packer/scripts/common/sshd.sh
   branches/2.6/vagrant/packer/scripts/common/vagrant.sh
   branches/2.6/vagrant/packer/scripts/mapguide/
   branches/2.6/vagrant/packer/scripts/mapguide/centos32.sh
   branches/2.6/vagrant/packer/scripts/mapguide/centos64.sh
   branches/2.6/vagrant/packer/scripts/mapguide/ubuntu32.sh
   branches/2.6/vagrant/packer/scripts/mapguide/ubuntu64.sh
   branches/2.6/vagrant/packer/scripts/ubuntu/
   branches/2.6/vagrant/packer/scripts/ubuntu/base.sh
   branches/2.6/vagrant/packer/scripts/ubuntu/cleanup.sh
   branches/2.6/vagrant/packer/scripts/ubuntu/virtualbox.sh
   branches/2.6/vagrant/packer/ubuntu12-amd64.json
   branches/2.6/vagrant/packer/ubuntu12-i386.json
   branches/2.6/vagrant/scripts/build.ps1
   branches/2.6/vagrant/scripts/build_fdo.ps1
   branches/2.6/vagrant/scripts/mguninstallcentos.sh
   branches/2.6/vagrant/scripts/smoke_test.sh
   branches/2.6/vagrant/ubuntu/test_x64/
   branches/2.6/vagrant/ubuntu/test_x64/Vagrantfile
   branches/2.6/vagrant/ubuntu/test_x64/provision.sh
   branches/2.6/vagrant/ubuntu/test_x86/
   branches/2.6/vagrant/ubuntu/test_x86/Vagrantfile
   branches/2.6/vagrant/ubuntu/test_x86/provision.sh
   branches/2.6/vagrant/verify.bat
Modified:
   branches/2.6/vagrant/build.bat
   branches/2.6/vagrant/centos/x64/Vagrantfile
   branches/2.6/vagrant/centos/x86/Vagrantfile
   branches/2.6/vagrant/clean.bat
   branches/2.6/vagrant/scripts/build.sh
   branches/2.6/vagrant/scripts/build_fdo.sh
   branches/2.6/vagrant/scripts/dpkgmapguide.sh
   branches/2.6/vagrant/scripts/mapguidecommon_excludes.txt
   branches/2.6/vagrant/scripts/mginstallcentos.sh
   branches/2.6/vagrant/scripts/mginstallubuntu.sh
   branches/2.6/vagrant/scripts/mguninstallubuntu.sh
   branches/2.6/vagrant/scripts/platformbase_excludes.txt
   branches/2.6/vagrant/sources/README.txt
   branches/2.6/vagrant/ubuntu/x64/Vagrantfile
   branches/2.6/vagrant/ubuntu/x86/Vagrantfile
Log:
Overlay 3.0 vagrant environment with version numbers adjusted back to MapGuide 2.6.1 and FDO 3.9

Added: branches/2.6/vagrant/README.txt
===================================================================
--- branches/2.6/vagrant/README.txt	                        (rev 0)
+++ branches/2.6/vagrant/README.txt	2015-07-27 12:26:06 UTC (rev 8719)
@@ -0,0 +1,68 @@
+Vagrant Build Environment README
+================================
+
+This directory contains configurations and scripts to do the following:
+
+ 1. Create/register the necessary vagrant base boxes
+ 2. Build MapGuide and FDO through vagrant-provisioned VMs
+
+Requirements
+============
+
+ * Vagrant (http://www.vagrantup.com/)
+ * packer (http://www.packer.io/)
+ * Build host assumed to be Windows
+ * Read sources/README.txt for additional requirements
+
+Building base boxes
+===================
+
+Run make_boxes.bat. This will run packer and create the following vagrant base boxes
+
+ * CentOS 6.5 32-bit
+ * CentOS 6.5 64-bit
+ * Ubuntu 12.04 32-bit
+ * Ubuntu 12.04 64-bit
+
+These boxes will also be registered in vagrant as:
+
+ * centos6-i386
+ * centos6-amd64
+ * ubuntu12-i386
+ * ubuntu12-amd64
+
+Building MapGuide and FDO
+=========================
+
+Run build.bat, this will build MapGuide and FDO for:
+
+ * CentOS 6.5 32-bit
+ * CentOS 6.5 64-bit
+ * Ubuntu 12.04 32-bit
+ * Ubuntu 12.04 64-bit
+
+If MG_SVN_UPDATE_SOURCES is set to 1 before running build.bat, a special CentOS VM will be spun up to svn update the MapGuide and FDO source
+tarballs to the latest revisions. Otherwise, the existing source tarballs will be built at their last updated svn revision.
+
+When each build completes, the build artifacts and assorted log files and unit test result XML files will be copied to these directories:
+
+ * builds/centos_x86
+ * builds/centos_x86/logs
+ * builds/centos_x64
+ * builds/centos_x64/logs
+ * builds/ubuntu_x86
+ * builds/ubuntu_x86/logs
+ * builds/ubuntu_x64
+ * builds/ubuntu_x64/logs
+
+For CentOS, the build will produce tarballs of FDO and MapGuide along with the necessary install scripts
+For Ubuntu, the build will produce debian package files of FDO and MapGuide along with the necessary install scripts
+
+At the end of the run, updated MapGuide and FDO source tarballs will be in sources/updated. You can move these tarballs up one level and
+overwrite the existing copies to ensure you have the most updated checkouts for the next build run.
+
+Troubleshooting
+===============
+
+If a given build does not produce the expected build artifacts, always check the build logs for any errors.
+

Modified: branches/2.6/vagrant/build.bat
===================================================================
--- branches/2.6/vagrant/build.bat	2015-07-27 12:14:02 UTC (rev 8718)
+++ branches/2.6/vagrant/build.bat	2015-07-27 12:26:06 UTC (rev 8719)
@@ -6,18 +6,22 @@
 rem
 rem NOTE: CentOS builds must *always* precede the Ubuntu builds as Ubuntu builds may depend
 rem on the package FDO SDK tarball produced by the CentOS build
+rem
+rem Requires the tee utility, which is part of GNU on Windows (https://github.com/bmatzelle/gow)
 
-SET BUILD_UBUNTU_32=1
-SET BUILD_UBUNTU_64=0
-SET BUILD_CENTOS_32=1
-SET BUILD_CENTOS_64=0
-SET TEARDOWN_UBUNTU_32=1
-SET TEARDOWN_UBUNTU_64=0
-SET TEARDOWN_CENTOS_32=1
-SET TEARDOWN_CENTOS_64=0
+IF "%MG_SVN_UPDATE_SOURCES%"=="" SET MG_SVN_UPDATE_SOURCES=1
+IF "%BUILD_UBUNTU_32%"=="" SET BUILD_UBUNTU_32=1
+IF "%BUILD_UBUNTU_64%"=="" SET BUILD_UBUNTU_64=1
+IF "%BUILD_CENTOS_32%"=="" SET BUILD_CENTOS_32=1
+IF "%BUILD_CENTOS_64%"=="" SET BUILD_CENTOS_64=1
+IF "%TEARDOWN_UBUNTU_32%"=="" SET TEARDOWN_UBUNTU_32=1
+IF "%TEARDOWN_UBUNTU_64%"=="" SET TEARDOWN_UBUNTU_64=1
+IF "%TEARDOWN_CENTOS_32%"=="" SET TEARDOWN_CENTOS_32=1
+IF "%TEARDOWN_CENTOS_64%"=="" SET TEARDOWN_CENTOS_64=1
 SET ROOT=%CD%
 SET COMPONENT=
 echo **************** Build Summary *********************
+echo Update Sources: %MG_SVN_UPDATE_SOURCES%
 echo Building Ubuntu (32-bit): %BUILD_UBUNTU_32% (teardown=%TEARDOWN_UBUNTU_32%)
 echo Building Ubuntu (64-bit): %BUILD_UBUNTU_64% (teardown=%TEARDOWN_UBUNTU_64%)
 echo Building CentOS (32-bit): %BUILD_CENTOS_32% (teardown=%TEARDOWN_CENTOS_32%)
@@ -29,6 +33,34 @@
 if %BUILD_UBUNTU_32% == 1 xcopy /S /Y /I scripts\* %ROOT%\ubuntu\x86
 if %BUILD_CENTOS_64% == 1 xcopy /S /Y /I scripts\* %ROOT%\centos\x64
 if %BUILD_UBUNTU_64% == 1 xcopy /S /Y /I scripts\* %ROOT%\ubuntu\x64
+echo [build]: Prepare build artifact location
+if not exist builds mkdir builds
+if not exist builds\centos_x86 mkdir builds\centos_x86
+if not exist builds\centos_x64 mkdir builds\centos_x64
+if not exist builds\ubuntu_x86 mkdir builds\ubuntu_x86
+if not exist builds\ubuntu_x64 mkdir builds\ubuntu_x64
+if not exist builds\centos_x86\logs mkdir builds\centos_x86\logs
+if not exist builds\centos_x64\logs mkdir builds\centos_x64\logs
+if not exist builds\ubuntu_x86\logs mkdir builds\ubuntu_x86\logs
+if not exist builds\ubuntu_x64\logs mkdir builds\ubuntu_x64\logs
+echo [build]: Checking if we're updating sources
+if %MG_SVN_UPDATE_SOURCES% == 1 goto update_sources
+goto check_centos_32
+:update_sources
+SET COMPONENT=Update MapGuide and FDO tarballs
+pushd sources
+if exist updated rd /S /Q updated
+popd
+pushd centos\src_update
+call vagrant up 2>&1 | tee up.log
+echo [build]: vagrant returned %errorlevel%
+if "%errorlevel%"=="1" goto error
+call vagrant destroy -f
+popd
+pushd sources\updated
+move /Y *.tar.gz ..
+echo [build]: Sources updated
+popd
 :check_centos_32
 echo [build]: Checking if we're building for CentOS 32-bit
 if %BUILD_CENTOS_32% == 1 goto build_centos_32
@@ -38,9 +70,21 @@
 SET COMPONENT=CentOS Build 32-bit
 echo [build]: MapGuide CentOS build 32-bit
 if exist build rd /S /Q build
-call vagrant up
+call vagrant up 2>&1 | tee up.log
 echo [build]: vagrant returned %errorlevel%
 if "%errorlevel%"=="1" goto error
+if not exist build\*.tar.xz goto error
+echo [build]: Move artifacts to build output
+move /Y build\*.sh %ROOT%\builds\centos_x86
+move /Y build\*.tar.xz %ROOT%\builds\centos_x86
+move /Y build\*.log %ROOT%\builds\centos_x86\logs
+move /Y build\*.xml %ROOT%\builds\centos_x86\logs
+echo [build]: Generate MD5 hashes
+pushd %ROOT%\builds\centos_x86
+if exist md5sums.txt del md5sums.txt
+md5sum *.sh > md5sums.txt
+md5sum *.tar.xz >> md5sums.txt
+popd
 if %TEARDOWN_CENTOS_32% == 1 (
     echo [build]: Tearing down CentOS 32 VM
     goto destroy_centos_32
@@ -61,9 +105,21 @@
 SET COMPONENT=Ubuntu Build 32-bit
 echo [build]: MapGuide Ubuntu build 32-bit
 if exist build rd /S /Q build
-call vagrant up
+call vagrant up 2>&1 | tee up.log
 echo [build]: vagrant returned %errorlevel%
 if "%errorlevel%"=="1" goto error
+if not exist build\*.deb goto error
+echo [build]: Move artifacts to build output
+move /Y build\*.sh %ROOT%\builds\ubuntu_x86
+move /Y build\*.deb %ROOT%\builds\ubuntu_x86
+move /Y build\*.log %ROOT%\builds\ubuntu_x86\logs
+move /Y build\*.xml %ROOT%\builds\ubuntu_x86\logs
+echo [build]: Generate MD5 hashes
+pushd %ROOT%\builds\ubuntu_x86
+if exist md5sums.txt del md5sums.txt
+md5sum *.sh > md5sums.txt
+md5sum *.deb >> md5sums.txt
+popd
 if %TEARDOWN_UBUNTU_32% == 1 (
     echo [build]: Tearing down Ubuntu 32 VM
     goto destroy_ubuntu_32
@@ -84,9 +140,21 @@
 SET COMPONENT=CentOS Build 64-bit
 echo [build]: MapGuide CentOS build 64-bit
 if exist build rd /S /Q build
-call vagrant up
+call vagrant up 2>&1 | tee up.log
 echo [build]: vagrant returned %errorlevel%
 if "%errorlevel%"=="1" goto error
+if not exist build\*.tar.xz goto error
+echo [build]: Move artifacts to build output
+move /Y build\*.sh %ROOT%\builds\centos_x64
+move /Y build\*.tar.xz %ROOT%\builds\centos_x64
+move /Y build\*.log %ROOT%\builds\centos_x64\logs
+move /Y build\*.xml %ROOT%\builds\centos_x64\logs
+echo [build]: Generate MD5 hashes
+pushd %ROOT%\builds\centos_x64
+if exist md5sums.txt del md5sums.txt
+md5sum *.sh > md5sums.txt
+md5sum *.tar.xz >> md5sums.txt
+popd
 if %TEARDOWN_CENTOS_64% == 1 (
     echo [build]: Tearing down CentOS 64 VM
     goto destroy_centos_64
@@ -107,9 +175,21 @@
 SET COMPONENT=Ubuntu Build 64-bit
 echo [build]: MapGuide Ubuntu build 64-bit
 if exist build rd /S /Q build
-call vagrant up
+call vagrant up 2>&1 | tee up.log
 echo [build]: vagrant returned %errorlevel%
 if "%errorlevel%"=="1" goto error
+if not exist build\*.deb goto error
+echo [build]: Move artifacts to build output
+move /Y build\*.sh %ROOT%\builds\ubuntu_x64
+move /Y build\*.deb %ROOT%\builds\ubuntu_x64
+move /Y build\*.log %ROOT%\builds\ubuntu_x64\logs
+move /Y build\*.xml %ROOT%\builds\ubuntu_x64\logs
+echo [build]: Generate MD5 hashes
+pushd %ROOT%\builds\ubuntu_x64
+if exist md5sums.txt del md5sums.txt
+md5sum *.sh > md5sums.txt
+md5sum *.deb >> md5sums.txt
+popd
 if %TEARDOWN_UBUNTU_64% == 1 (
     echo [build]: Tearing down Ubuntu 64 VM
     goto destroy_ubuntu_64

Added: branches/2.6/vagrant/centos/src_update/Vagrantfile
===================================================================
--- branches/2.6/vagrant/centos/src_update/Vagrantfile	                        (rev 0)
+++ branches/2.6/vagrant/centos/src_update/Vagrantfile	2015-07-27 12:26:06 UTC (rev 8719)
@@ -0,0 +1,202 @@
+# -*- mode: ruby -*-
+# vi: set ft=ruby :
+
+# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
+VAGRANTFILE_API_VERSION = "2"
+
+Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
+  # All Vagrant configuration is done here. The most common configuration
+  # options are documented and commented below. For a complete reference,
+  # please see the online documentation at vagrantup.com.
+
+  # Every Vagrant virtual environment requires a box to build off of.
+  config.vm.box = "centos6-i386"
+
+  # The url from where the 'config.vm.box' box will be fetched if it
+  # doesn't already exist on the user's system.
+  # config.vm.box_url = "http://domain.com/path/to/above.box"
+
+  # Create a forwarded port mapping which allows access to a specific port
+  # within the machine from a port on the host machine. In the example below,
+  # accessing "localhost:8080" will access port 80 on the guest machine.
+  # config.vm.network :forwarded_port, guest: 80, host: 8080
+
+  # Create a private network, which allows host-only access to the machine
+  # using a specific IP.
+  # config.vm.network :private_network, ip: "192.168.33.10"
+
+  # Create a public network, which generally matched to bridged network.
+  # Bridged networks make the machine appear as another physical device on
+  # your network.
+  # config.vm.network :public_network
+
+  # If true, then any SSH connections made will enable agent forwarding.
+  # Default value: false
+  # config.ssh.forward_agent = true
+
+  # Share an additional folder to the guest VM. The first argument is
+  # the path on the host to the actual folder. The second argument is
+  # the path on the guest to mount the folder. And the optional third
+  # argument is a set of non-required options.
+  config.vm.synced_folder "../../sources", "/mapguide_sources"
+
+  # Provider-specific configuration so you can fine-tune various
+  # backing providers for Vagrant. These expose provider-specific options.
+  # Example for VirtualBox:
+  #
+  # config.vm.provider :virtualbox do |vb|
+  #   # Don't boot with headless mode
+  #   vb.gui = true
+  #
+  #   # Use VBoxManage to customize the VM. For example to change memory:
+  #   vb.customize ["modifyvm", :id, "--memory", "1024"]
+  # end
+  #
+  # View the documentation for the provider you're using for more
+  # information on available options.
+
+  # Enable provisioning with Puppet stand alone.  Puppet manifests
+  # are contained in a directory path relative to this Vagrantfile.
+  # You will need to create the manifests directory and a manifest in
+  # the file centos6.4-x86-mapguide.pp in the manifests_path directory.
+  #
+  # An example Puppet manifest to provision the message of the day:
+  #
+  # # group { "puppet":
+  # #   ensure => "present",
+  # # }
+  # #
+  # # File { owner => 0, group => 0, mode => 0644 }
+  # #
+  # # file { '/etc/motd':
+  # #   content => "Welcome to your Vagrant-built virtual machine!
+  # #               Managed by Puppet.\n"
+  # # }
+  #
+  # config.vm.provision :puppet do |puppet|
+  #   puppet.manifests_path = "manifests"
+  #   puppet.manifest_file  = "site.pp"
+  # end
+
+  # Enable provisioning with chef solo, specifying a cookbooks path, roles
+  # path, and data_bags path (all relative to this Vagrantfile), and adding
+  # some recipes and/or roles.
+  #
+  # config.vm.provision :chef_solo do |chef|
+  #   chef.cookbooks_path = "../my-recipes/cookbooks"
+  #   chef.roles_path = "../my-recipes/roles"
+  #   chef.data_bags_path = "../my-recipes/data_bags"
+  #   chef.add_recipe "mysql"
+  #   chef.add_role "web"
+  #
+  #   # You may also specify custom JSON attributes:
+  #   chef.json = { :mysql_password => "foo" }
+  # end
+
+  # Enable provisioning with chef server, specifying the chef server URL,
+  # and the path to the validation key (relative to this Vagrantfile).
+  #
+  # The Opscode Platform uses HTTPS. Substitute your organization for
+  # ORGNAME in the URL and validation key.
+  #
+  # If you have your own Chef Server, use the appropriate URL, which may be
+  # HTTP instead of HTTPS depending on your configuration. Also change the
+  # validation key to validation.pem.
+  #
+  # config.vm.provision :chef_client do |chef|
+  #   chef.chef_server_url = "https://api.opscode.com/organizations/ORGNAME"
+  #   chef.validation_key_path = "ORGNAME-validator.pem"
+  # end
+  #
+  # If you're using the Opscode platform, your validator client is
+  # ORGNAME-validator, replacing ORGNAME with your organization name.
+  #
+  # If you have your own Chef Server, the default validation client name is
+  # chef-validator, unless you changed the configuration.
+  #
+  #   chef.validation_client_name = "ORGNAME-validator"
+  
+  $script = <<SCRIPT
+BUILD_COMPONENT=
+check_build()
+{
+	error=$?
+	if [ $error -ne 0 ]; then
+		echo "[error]: ${BUILD_COMPONENT} - Error build failed ($error)"
+		exit $error
+	fi
+}
+cd ~
+echo [provision]: Home directory is `pwd`
+echo [provision]: Checking directories
+HAVE_FDO=0
+HAVE_FDO_LIBS=0
+HAVE_MAPGUIDE=0
+MG_UNIT_TEST=1
+FDO_UNIT_TEST=1
+MAKE_FDO_SDK=0
+FDO_SRC_ROOT=~/fdo/branches
+FDO_VER_MM=3.9
+FDO_VER_FULL=${FDO_VER_MM}.0
+MG_VER_MM=2.6
+MG_VER_FULL=${MG_VER_MM}.1
+FDO_SRC_DIR=3.9
+FDO_SRC=$FDO_SRC_ROOT/$FDO_SRC_DIR
+MG_SRC_ROOT=~/mapguide/branches/2.6
+MG_SRC=$MG_SRC_ROOT/MgDev
+FDO_TARBALL=fdo-checkout-3.9.tar.gz
+MG_TARBALL=mapguide-checkout-2.6.tar.gz
+FDO_INST_PATH=/usr/local/fdo-${FDO_VER_FULL}
+MG_INST_PATH=/usr/local/mapguideopensource-${MG_VER_FULL}
+if [ -d $FDO_SRC ];
+then
+    HAVE_FDO=1
+fi
+if [ -d $MG_SRC ];
+then
+    HAVE_MAPGUIDE=1
+fi
+if [ $HAVE_FDO -eq 0 ];
+then
+    echo [provision]: Extracting FDO working copy
+    mkdir -p $FDO_SRC_ROOT
+    tar -zxf /mapguide_sources/$FDO_TARBALL -C $FDO_SRC_ROOT
+fi
+if [ $HAVE_MAPGUIDE -eq 0 ];
+then
+    echo [provision]: Extracting MapGuide working copy
+    mkdir -p $MG_SRC_ROOT
+    tar -zxf /mapguide_sources/$MG_TARBALL -C $MG_SRC_ROOT
+fi
+echo [provision]: svn update FDO
+BUILD_COMPONENT="svn update FDO"
+svn update $FDO_SRC
+check_build
+echo [provision]: svn update MapGuide
+BUILD_COMPONENT="svn update MapGuide"
+svn update $MG_SRC
+check_build
+if [ ! -d /mapguide_sources/updated ]; then
+    sudo mkdir -p /mapguide_sources/updated
+    cd $MG_SRC_ROOT
+    echo [provision]: Updating mapguide source tarball
+    tar -zcf $MG_TARBALL MgDev
+    sudo mv $MG_TARBALL /mapguide_sources/updated
+    cd $FDO_SRC_ROOT
+    echo [provision]: Updating fdo source tarball
+    tar -zcf $FDO_TARBALL $FDO_SRC_DIR
+    sudo mv $FDO_TARBALL /mapguide_sources/updated
+else
+    echo [provision]: Updated tarballs already exist. Doing nothing
+fi
+echo [provision]: Build complete
+echo [info]: MapGuide working copy
+svn info $MG_SRC
+echo [info]: FDO working copy
+svn info $FDO_SRC
+SCRIPT
+  
+  config.vm.provision "shell",
+    privileged: false,
+    inline: $script
+end

Added: branches/2.6/vagrant/centos/test_x64/Vagrantfile
===================================================================
--- branches/2.6/vagrant/centos/test_x64/Vagrantfile	                        (rev 0)
+++ branches/2.6/vagrant/centos/test_x64/Vagrantfile	2015-07-27 12:26:06 UTC (rev 8719)
@@ -0,0 +1,123 @@
+# -*- mode: ruby -*-
+# vi: set ft=ruby :
+
+# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
+VAGRANTFILE_API_VERSION = "2"
+
+Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
+  # All Vagrant configuration is done here. The most common configuration
+  # options are documented and commented below. For a complete reference,
+  # please see the online documentation at vagrantup.com.
+
+  # Every Vagrant virtual environment requires a box to build off of.
+  config.vm.box = "centos6-amd64"
+
+  # The url from where the 'config.vm.box' box will be fetched if it
+  # doesn't already exist on the user's system.
+  # config.vm.box_url = "http://domain.com/path/to/above.box"
+
+  # Create a forwarded port mapping which allows access to a specific port
+  # within the machine from a port on the host machine. In the example below,
+  # accessing "localhost:8080" will access port 80 on the guest machine.
+  # config.vm.network :forwarded_port, guest: 80, host: 8080
+
+  # Create a private network, which allows host-only access to the machine
+  # using a specific IP.
+  # config.vm.network :private_network, ip: "192.168.33.10"
+
+  # Create a public network, which generally matched to bridged network.
+  # Bridged networks make the machine appear as another physical device on
+  # your network.
+  # config.vm.network :public_network
+
+  # If true, then any SSH connections made will enable agent forwarding.
+  # Default value: false
+  # config.ssh.forward_agent = true
+
+  # Share an additional folder to the guest VM. The first argument is
+  # the path on the host to the actual folder. The second argument is
+  # the path on the guest to mount the folder. And the optional third
+  # argument is a set of non-required options.
+  config.vm.synced_folder "../../sources", "/mapguide_sources"
+
+  # Provider-specific configuration so you can fine-tune various
+  # backing providers for Vagrant. These expose provider-specific options.
+  # Example for VirtualBox:
+  #
+  # config.vm.provider :virtualbox do |vb|
+  #   # Don't boot with headless mode
+  #   vb.gui = true
+  #
+  #   # Use VBoxManage to customize the VM. For example to change memory:
+  #   vb.customize ["modifyvm", :id, "--memory", "1024"]
+  # end
+  #
+  # View the documentation for the provider you're using for more
+  # information on available options.
+
+  # Enable provisioning with Puppet stand alone.  Puppet manifests
+  # are contained in a directory path relative to this Vagrantfile.
+  # You will need to create the manifests directory and a manifest in
+  # the file centos6.4-x86-mapguide.pp in the manifests_path directory.
+  #
+  # An example Puppet manifest to provision the message of the day:
+  #
+  # # group { "puppet":
+  # #   ensure => "present",
+  # # }
+  # #
+  # # File { owner => 0, group => 0, mode => 0644 }
+  # #
+  # # file { '/etc/motd':
+  # #   content => "Welcome to your Vagrant-built virtual machine!
+  # #               Managed by Puppet.\n"
+  # # }
+  #
+  # config.vm.provision :puppet do |puppet|
+  #   puppet.manifests_path = "manifests"
+  #   puppet.manifest_file  = "site.pp"
+  # end
+
+  # Enable provisioning with chef solo, specifying a cookbooks path, roles
+  # path, and data_bags path (all relative to this Vagrantfile), and adding
+  # some recipes and/or roles.
+  #
+  # config.vm.provision :chef_solo do |chef|
+  #   chef.cookbooks_path = "../my-recipes/cookbooks"
+  #   chef.roles_path = "../my-recipes/roles"
+  #   chef.data_bags_path = "../my-recipes/data_bags"
+  #   chef.add_recipe "mysql"
+  #   chef.add_role "web"
+  #
+  #   # You may also specify custom JSON attributes:
+  #   chef.json = { :mysql_password => "foo" }
+  # end
+
+  # Enable provisioning with chef server, specifying the chef server URL,
+  # and the path to the validation key (relative to this Vagrantfile).
+  #
+  # The Opscode Platform uses HTTPS. Substitute your organization for
+  # ORGNAME in the URL and validation key.
+  #
+  # If you have your own Chef Server, use the appropriate URL, which may be
+  # HTTP instead of HTTPS depending on your configuration. Also change the
+  # validation key to validation.pem.
+  #
+  # config.vm.provision :chef_client do |chef|
+  #   chef.chef_server_url = "https://api.opscode.com/organizations/ORGNAME"
+  #   chef.validation_key_path = "ORGNAME-validator.pem"
+  # end
+  #
+  # If you're using the Opscode platform, your validator client is
+  # ORGNAME-validator, replacing ORGNAME with your organization name.
+  #
+  # If you have your own Chef Server, the default validation client name is
+  # chef-validator, unless you changed the configuration.
+  #
+  #   chef.validation_client_name = "ORGNAME-validator"
+  
+  config.vm.provision "shell",
+    privileged: false,
+    path: "provision.sh",
+    args: ["#{ENV['DOWNLOAD_HOST']}", "#{ENV['MG_DIST_DIR']}"]
+end

Added: branches/2.6/vagrant/centos/test_x64/provision.sh
===================================================================
--- branches/2.6/vagrant/centos/test_x64/provision.sh	                        (rev 0)
+++ branches/2.6/vagrant/centos/test_x64/provision.sh	2015-07-27 12:26:06 UTC (rev 8719)
@@ -0,0 +1,17 @@
+#!/bin/bash
+DOWNLOAD_HOST=$1
+URI_PART=$2
+DIST_DIR="centos_x64"
+sudo yum install -y wget
+echo Download host is: $DOWNLOAD_HOST
+wget "http://$DOWNLOAD_HOST/$URI_PART/Sheboygan.mgp"
+wget "http://$DOWNLOAD_HOST/$URI_PART/smoke_test.sh"
+sudo mv Sheboygan.mgp /tmp/
+wget "http://$DOWNLOAD_HOST/$URI_PART/$DIST_DIR/mginstallcentos.sh"
+sed -i 's/URL="$URL_ROOT\/$URL_PART"/URL="http:\/\/'"$DOWNLOAD_HOST"'\/'"$URI_PART"'\/'"$DIST_DIR"'"/g' mginstallcentos.sh
+chmod +x smoke_test.sh
+chmod +x mginstallcentos.sh
+sudo -E ./mginstallcentos.sh
+echo Wait 10s before running smoke test
+sleep 10s
+sudo -E ./smoke_test.sh
\ No newline at end of file

Added: branches/2.6/vagrant/centos/test_x86/Vagrantfile
===================================================================
--- branches/2.6/vagrant/centos/test_x86/Vagrantfile	                        (rev 0)
+++ branches/2.6/vagrant/centos/test_x86/Vagrantfile	2015-07-27 12:26:06 UTC (rev 8719)
@@ -0,0 +1,123 @@
+# -*- mode: ruby -*-
+# vi: set ft=ruby :
+
+# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
+VAGRANTFILE_API_VERSION = "2"
+
+Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
+  # All Vagrant configuration is done here. The most common configuration
+  # options are documented and commented below. For a complete reference,
+  # please see the online documentation at vagrantup.com.
+
+  # Every Vagrant virtual environment requires a box to build off of.
+  config.vm.box = "centos6-i386"
+
+  # The url from where the 'config.vm.box' box will be fetched if it
+  # doesn't already exist on the user's system.
+  # config.vm.box_url = "http://domain.com/path/to/above.box"
+
+  # Create a forwarded port mapping which allows access to a specific port
+  # within the machine from a port on the host machine. In the example below,
+  # accessing "localhost:8080" will access port 80 on the guest machine.
+  # config.vm.network :forwarded_port, guest: 80, host: 8080
+
+  # Create a private network, which allows host-only access to the machine
+  # using a specific IP.
+  # config.vm.network :private_network, ip: "192.168.33.10"
+
+  # Create a public network, which generally matched to bridged network.
+  # Bridged networks make the machine appear as another physical device on
+  # your network.
+  # config.vm.network :public_network
+
+  # If true, then any SSH connections made will enable agent forwarding.
+  # Default value: false
+  # config.ssh.forward_agent = true
+
+  # Share an additional folder to the guest VM. The first argument is
+  # the path on the host to the actual folder. The second argument is
+  # the path on the guest to mount the folder. And the optional third
+  # argument is a set of non-required options.
+  config.vm.synced_folder "../../sources", "/mapguide_sources"
+
+  # Provider-specific configuration so you can fine-tune various
+  # backing providers for Vagrant. These expose provider-specific options.
+  # Example for VirtualBox:
+  #
+  # config.vm.provider :virtualbox do |vb|
+  #   # Don't boot with headless mode
+  #   vb.gui = true
+  #
+  #   # Use VBoxManage to customize the VM. For example to change memory:
+  #   vb.customize ["modifyvm", :id, "--memory", "1024"]
+  # end
+  #
+  # View the documentation for the provider you're using for more
+  # information on available options.
+
+  # Enable provisioning with Puppet stand alone.  Puppet manifests
+  # are contained in a directory path relative to this Vagrantfile.
+  # You will need to create the manifests directory and a manifest in
+  # the file centos6.4-x86-mapguide.pp in the manifests_path directory.
+  #
+  # An example Puppet manifest to provision the message of the day:
+  #
+  # # group { "puppet":
+  # #   ensure => "present",
+  # # }
+  # #
+  # # File { owner => 0, group => 0, mode => 0644 }
+  # #
+  # # file { '/etc/motd':
+  # #   content => "Welcome to your Vagrant-built virtual machine!
+  # #               Managed by Puppet.\n"
+  # # }
+  #
+  # config.vm.provision :puppet do |puppet|
+  #   puppet.manifests_path = "manifests"
+  #   puppet.manifest_file  = "site.pp"
+  # end
+
+  # Enable provisioning with chef solo, specifying a cookbooks path, roles
+  # path, and data_bags path (all relative to this Vagrantfile), and adding
+  # some recipes and/or roles.
+  #
+  # config.vm.provision :chef_solo do |chef|
+  #   chef.cookbooks_path = "../my-recipes/cookbooks"
+  #   chef.roles_path = "../my-recipes/roles"
+  #   chef.data_bags_path = "../my-recipes/data_bags"
+  #   chef.add_recipe "mysql"
+  #   chef.add_role "web"
+  #
+  #   # You may also specify custom JSON attributes:
+  #   chef.json = { :mysql_password => "foo" }
+  # end
+
+  # Enable provisioning with chef server, specifying the chef server URL,
+  # and the path to the validation key (relative to this Vagrantfile).
+  #
+  # The Opscode Platform uses HTTPS. Substitute your organization for
+  # ORGNAME in the URL and validation key.
+  #
+  # If you have your own Chef Server, use the appropriate URL, which may be
+  # HTTP instead of HTTPS depending on your configuration. Also change the
+  # validation key to validation.pem.
+  #
+  # config.vm.provision :chef_client do |chef|
+  #   chef.chef_server_url = "https://api.opscode.com/organizations/ORGNAME"
+  #   chef.validation_key_path = "ORGNAME-validator.pem"
+  # end
+  #
+  # If you're using the Opscode platform, your validator client is
+  # ORGNAME-validator, replacing ORGNAME with your organization name.
+  #
+  # If you have your own Chef Server, the default validation client name is
+  # chef-validator, unless you changed the configuration.
+  #
+  #   chef.validation_client_name = "ORGNAME-validator"
+  
+  config.vm.provision "shell",
+    privileged: false,
+    path: "provision.sh",
+    args: ["#{ENV['DOWNLOAD_HOST']}", "#{ENV['MG_DIST_DIR']}"]
+end

Added: branches/2.6/vagrant/centos/test_x86/provision.sh
===================================================================
--- branches/2.6/vagrant/centos/test_x86/provision.sh	                        (rev 0)
+++ branches/2.6/vagrant/centos/test_x86/provision.sh	2015-07-27 12:26:06 UTC (rev 8719)
@@ -0,0 +1,17 @@
+#!/bin/bash
+DOWNLOAD_HOST=$1
+URI_PART=$2
+DIST_DIR="centos_x86"
+sudo yum install -y wget
+echo Download host is: $DOWNLOAD_HOST
+wget "http://$DOWNLOAD_HOST/$URI_PART/Sheboygan.mgp"
+wget "http://$DOWNLOAD_HOST/$URI_PART/smoke_test.sh"
+sudo mv Sheboygan.mgp /tmp/
+wget "http://$DOWNLOAD_HOST/$URI_PART/$DIST_DIR/mginstallcentos.sh"
+sed -i 's/URL="$URL_ROOT\/$URL_PART"/URL="http:\/\/'"$DOWNLOAD_HOST"'\/'"$URI_PART"'\/'"$DIST_DIR"'"/g' mginstallcentos.sh
+chmod +x smoke_test.sh
+chmod +x mginstallcentos.sh
+sudo -E ./mginstallcentos.sh
+echo Wait 10s before running smoke test
+sleep 10s
+sudo -E ./smoke_test.sh
\ No newline at end of file

Modified: branches/2.6/vagrant/centos/x64/Vagrantfile
===================================================================
--- branches/2.6/vagrant/centos/x64/Vagrantfile	2015-07-27 12:14:02 UTC (rev 8718)
+++ branches/2.6/vagrant/centos/x64/Vagrantfile	2015-07-27 12:26:06 UTC (rev 8719)
@@ -10,7 +10,7 @@
   # please see the online documentation at vagrantup.com.
 
   # Every Vagrant virtual environment requires a box to build off of.
-  config.vm.box = "vagrant-centos64-x64"
+  config.vm.box = "centos6-amd64"
 
   # The url from where the 'config.vm.box' box will be fetched if it
   # doesn't already exist on the user's system.
@@ -147,15 +147,15 @@
 HAVE_FDO=0
 HAVE_FDO_LIBS=0
 HAVE_MAPGUIDE=0
-MG_UNIT_TEST=1
-FDO_UNIT_TEST=1
+MG_UNIT_TEST=0
+FDO_UNIT_TEST=0
 MAKE_FDO_SDK=0
 SCRIPT_ROOT=~/scripts
 FDO_SRC_ROOT=~/fdo/branches
 FDO_VER_MM=3.9
 FDO_VER_FULL=${FDO_VER_MM}.0
 MG_VER_MM=2.6
-MG_VER_FULL=${MG_VER_MM}.0
+MG_VER_FULL=${MG_VER_MM}.1
 FDO_SRC_DIR=3.9
 FDO_SRC=$FDO_SRC_ROOT/$FDO_SRC_DIR
 FDO_LIB_SRC=~/fdo_rdbms_thirdparty
@@ -163,7 +163,9 @@
 MG_SRC=$MG_SRC_ROOT/MgDev
 FDO_TARBALL=fdo-checkout-3.9.tar.gz
 MG_TARBALL=mapguide-checkout-2.6.tar.gz
-if [ -d $FDO_SRC ]; 
+FDO_INST_PATH=/usr/local/fdo-${FDO_VER_FULL}
+MG_INST_PATH=/usr/local/mapguideopensource-${MG_VER_FULL}
+if [ -d $FDO_SRC ];
 then
     HAVE_FDO=1
 fi
@@ -183,8 +185,6 @@
     sudo mkdir -p /usr/include/asm
     sudo cp /mapguide_sources/atomic.h /usr/include/asm
 fi
-#echo [provision]: Checking all tools and libs are in place
-#yum install -y gcc-* gd-* automake bison byacc flex doxygen expat expat-devel libtool libjpeg-devel libpng libpng-devel libxml2 libxml2-devel openssl curl curl-devel libxslt libxslt-devel subversion java-1.7.0-openjdk java-1.7.0-openjdk-devel ant dos2unix openssh-server openldap-devel alsa-lib-devel pcre-devel unixODBC-devel libcom_err-devel krb5-devel openssl-devel mysql-devel postgresql-devel unixODBC
 echo [provision]: Clean line endings
 sudo dos2unix /vagrant/*.sh
 sudo dos2unix /vagrant/*.pl
@@ -219,14 +219,6 @@
     mkdir -p $MG_SRC_ROOT
     tar -zxf /mapguide_sources/$MG_TARBALL -C $MG_SRC_ROOT
 fi
-echo [provision]: svn update FDO
-BUILD_COMPONENT="svn update FDO"
-svn update $FDO_SRC
-check_build
-echo [provision]: svn update MapGuide
-BUILD_COMPONENT="svn update MapGuide"
-svn update $MG_SRC
-check_build
 if [ -d /mapguide_sources/patches/fdo ];
 then
     echo [provision]: Applying FDO source patches
@@ -251,31 +243,40 @@
 > ~/unit_test_status.log
 if [ $FDO_UNIT_TEST -eq 1 ];
 then
-    export NLSPATH=/usr/local/fdo-${FDO_VER_FULL}/nls/%N
     echo [provision]: Unit test FDO
     BUILD_COMPONENT="Unit Test FDO Core"
     cd $SCRIPT_ROOT/fdo_build_area/Fdo/UnitTest
-    sudo -E ./UnitTest 2>&1 | tee ~/fdo_core_unit_test.log
+    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee ~/fdo_core_unit_test.log
     check_test
     BUILD_COMPONENT="Unit Test SHP Provider"
     cd $SCRIPT_ROOT/fdo_build_area/Providers/SHP/Src/UnitTest
-    sudo -E ./UnitTest 2>&1 | tee ~/fdo_shp_unit_test.log
+    sudo rm providers.xml
+    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee ~/fdo_shp_unit_test.log
     check_test
     BUILD_COMPONENT="Unit Test SDF Provider"
     cd $SCRIPT_ROOT/fdo_build_area/Providers/SDF/Src/UnitTest
-    sudo -E ./UnitTest 2>&1 | tee ~/fdo_sdf_unit_test.log
+    sudo rm providers.xml
+    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee ~/fdo_sdf_unit_test.log
     check_test
     BUILD_COMPONENT="Unit Test SQLite Provider"
     cd $SCRIPT_ROOT/fdo_build_area/Providers/SQLite/Src/UnitTest
-    sudo -E ./UnitTest 2>&1 | tee ~/fdo_sqlite_unit_test.log
+    sudo rm providers.xml
+    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee ~/fdo_sqlite_unit_test.log
     check_test
     BUILD_COMPONENT="Unit Test GDAL Provider"
     cd $SCRIPT_ROOT/fdo_build_area/Providers/GDAL/Src/UnitTest
-    sudo -E ./UnitTest 2>&1 | tee ~/fdo_gdal_unit_test.log
+    sudo rm providers.xml
+    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee ~/fdo_gdal_unit_test.log
     check_test
+    BUILD_COMPONENT="Unit Test OGR Provider"
+    cd $SCRIPT_ROOT/fdo_build_area/Providers/OGR/Src/UnitTest
+    sudo rm providers.xml
+    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee ~/fdo_ogr_unit_test.log
+    check_test
     BUILD_COMPONENT="Unit Test WMS Provider"
     cd $SCRIPT_ROOT/fdo_build_area/Providers/WMS/Src/UnitTest
-    sudo -E ./UnitTest 2>&1 | tee ~/fdo_wms_unit_test.log
+    sudo rm providers.xml
+    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee ~/fdo_wms_unit_test.log
     check_test
 fi
 if [ $MG_UNIT_TEST -eq 1 ];
@@ -293,7 +294,7 @@
     cd $SCRIPT_ROOT/mgdev/Server/src/Core
     sudo make unittest.sh
     # Run the test suites individually except for TileService/ResourceService for reasons already stated
-    for comp in CoordinateSystem FeatureService Geometry KmlService LogManager MdfModel Misc RenderingService ServerAdminService ServerManager ServiceManager SiteManager SiteService ProfilingService TransformMesh
+    for comp in CoordinateSystem FeatureService Geometry KmlService LogManager MappingService MdfModel Misc Performance RenderingService ServerAdminService ServerManager ServiceManager SiteManager SiteService ProfilingService TransformMesh
     do
         sudo -E ./mgserver test $comp UnitTestResults_${comp}.xml 2>&1 | tee ~/mapguide_${comp}_unit_test.log
         check_test
@@ -301,6 +302,8 @@
             sudo mv UnitTestResults_${comp}.xml ~/UnitTestResults_${comp}.xml
         fi
     done
+    cd $SCRIPT_ROOT/mgdev
+    sudo -E ./run_tests.sh --prefix ${MG_INST_PATH} --with-php --with-java --logpath ~
 fi
 cd $SCRIPT_ROOT
 echo [provision]: Make output dir
@@ -308,15 +311,15 @@
 echo [provision]: Copy log files to output dir
 sudo mv -f ~/*.log /vagrant/build
 echo [provision]: Copy tarballs to output dir
-sudo cp bin/*.tar.gz /vagrant/build
-sudo cp fdosdk-centos6-i386-${FDO_VER_FULL}_${FDO_REV}.tar.gz /vagrant/build
+sudo cp bin/*.tar.xz /vagrant/build
+sudo cp fdosdk-centos6-amd64-${FDO_VER_FULL}_${FDO_REV}.tar.xz /vagrant/build
 if [ $MAKE_FDO_SDK -eq 1 ]; then
     echo [provision]: Copy FDO SDK for Ubuntu builds
     # Copy SDK also to sources, so Ubuntu can pick it up
-    sudo rm -f /mapguide_sources/fdosdk*.tar.gz
-    sudo cp fdosdk-centos6-amd64-${FDO_VER_FULL}_${FDO_REV}.tar.gz /mapguide_sources
+    sudo rm -f /mapguide_sources/fdosdk*.tar.xz
+    sudo cp fdosdk-centos6-amd64-${FDO_VER_FULL}_${FDO_REV}.tar.xz /mapguide_sources
     # Record file name so Ubuntu knows what tarball to extract from
-    sudo echo fdosdk-centos6-amd64-${FDO_VER_FULL}_${FDO_REV}.tar.gz > /mapguide_sources/fdosdk_filename
+    sudo echo fdosdk-centos6-amd64-${FDO_VER_FULL}_${FDO_REV}.tar.xz > /mapguide_sources/fdosdk_filename
     sudo echo ${FDO_REV} > /mapguide_sources/fdosdk_rev
     # Export filelist to Ubuntu can deb package this SDK if needed
     sudo cp -R $SCRIPT_ROOT/fdo_build_area/install/filelist /mapguide_sources
@@ -327,21 +330,12 @@
 sudo mv ~/UnitTestResults_*.xml /vagrant/build
 echo [provision]: Copy install/uninstall scripts to output dir
 sudo cp /vagrant/mginstallcentos.sh /vagrant/build/mginstallcentos.sh
+sudo cp /vagrant/mguninstallcentos.sh /vagrant/build/mguninstallcentos.sh
+sudo sed -i 's/URL_PART="centos"/URL_PART="centos_x64"/g' /vagrant/build/mginstallcentos.sh
 sudo sed -i 's/FDOVER_REV=0/FDOVER_REV='"$FDO_REV"'/g' /vagrant/build/mginstallcentos.sh
 sudo sed -i 's/MGVER_REV=0/MGVER_REV='"$MG_REV"'/g' /vagrant/build/mginstallcentos.sh
-if [ ! -d /mapguide_sources/updated ]; then
-    sudo mkdir -p /mapguide_sources/updated
-    cd $MG_SRC_ROOT
-    echo [provision]: Updating mapguide source tarball
-    tar -zcf $MG_TARBALL MgDev
-    sudo mv $MG_TARBALL /mapguide_sources/updated
-    cd $FDO_SRC_ROOT
-    echo [provision]: Updating fdo source tarball
-    tar -zcf $FDO_TARBALL $FDO_SRC_DIR
-    sudo mv $FDO_TARBALL /mapguide_sources/updated
-else
-    echo [provision]: Updated tarballs already exist. Doing nothing
-fi
+sudo sed -i 's/FDO_ARCH=i386/FDO_ARCH=amd64/g' /vagrant/build/mginstallcentos.sh
+sudo sed -i 's/MG_ARCH=i386/MG_ARCH=amd64/g' /vagrant/build/mginstallcentos.sh
 echo [provision]: Build complete
 SCRIPT
   

Modified: branches/2.6/vagrant/centos/x86/Vagrantfile
===================================================================
--- branches/2.6/vagrant/centos/x86/Vagrantfile	2015-07-27 12:14:02 UTC (rev 8718)
+++ branches/2.6/vagrant/centos/x86/Vagrantfile	2015-07-27 12:26:06 UTC (rev 8719)
@@ -10,7 +10,7 @@
   # please see the online documentation at vagrantup.com.
 
   # Every Vagrant virtual environment requires a box to build off of.
-  config.vm.box = "vagrant-centos64-x86"
+  config.vm.box = "centos6-i386"
 
   # The url from where the 'config.vm.box' box will be fetched if it
   # doesn't already exist on the user's system.
@@ -147,15 +147,15 @@
 HAVE_FDO=0
 HAVE_FDO_LIBS=0
 HAVE_MAPGUIDE=0
-MG_UNIT_TEST=1
-FDO_UNIT_TEST=1
+MG_UNIT_TEST=0
+FDO_UNIT_TEST=0
 MAKE_FDO_SDK=0
 SCRIPT_ROOT=~/scripts
 FDO_SRC_ROOT=~/fdo/branches
 FDO_VER_MM=3.9
 FDO_VER_FULL=${FDO_VER_MM}.0
 MG_VER_MM=2.6
-MG_VER_FULL=${MG_VER_MM}.0
+MG_VER_FULL=${MG_VER_MM}.1
 FDO_SRC_DIR=3.9
 FDO_SRC=$FDO_SRC_ROOT/$FDO_SRC_DIR
 FDO_LIB_SRC=~/fdo_rdbms_thirdparty
@@ -163,7 +163,9 @@
 MG_SRC=$MG_SRC_ROOT/MgDev
 FDO_TARBALL=fdo-checkout-3.9.tar.gz
 MG_TARBALL=mapguide-checkout-2.6.tar.gz
-if [ -d $FDO_SRC ]; 
+FDO_INST_PATH=/usr/local/fdo-${FDO_VER_FULL}
+MG_INST_PATH=/usr/local/mapguideopensource-${MG_VER_FULL}
+if [ -d $FDO_SRC ];
 then
     HAVE_FDO=1
 fi
@@ -219,14 +221,6 @@
     mkdir -p $MG_SRC_ROOT
     tar -zxf /mapguide_sources/$MG_TARBALL -C $MG_SRC_ROOT
 fi
-echo [provision]: svn update FDO
-BUILD_COMPONENT="svn update FDO"
-svn update $FDO_SRC
-check_build
-echo [provision]: svn update MapGuide
-BUILD_COMPONENT="svn update MapGuide"
-svn update $MG_SRC
-check_build
 if [ -d /mapguide_sources/patches/fdo ];
 then
     echo [provision]: Applying FDO source patches
@@ -251,31 +245,40 @@
 > ~/unit_test_status.log
 if [ $FDO_UNIT_TEST -eq 1 ];
 then
-    export NLSPATH=/usr/local/fdo-${FDO_VER_FULL}/nls/%N
     echo [provision]: Unit test FDO
     BUILD_COMPONENT="Unit Test FDO Core"
     cd $SCRIPT_ROOT/fdo_build_area/Fdo/UnitTest
-    sudo -E ./UnitTest 2>&1 | tee ~/fdo_core_unit_test.log
+    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee ~/fdo_core_unit_test.log
     check_test
     BUILD_COMPONENT="Unit Test SHP Provider"
     cd $SCRIPT_ROOT/fdo_build_area/Providers/SHP/Src/UnitTest
-    sudo -E ./UnitTest 2>&1 | tee ~/fdo_shp_unit_test.log
+    sudo rm providers.xml
+    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee ~/fdo_shp_unit_test.log
     check_test
     BUILD_COMPONENT="Unit Test SDF Provider"
     cd $SCRIPT_ROOT/fdo_build_area/Providers/SDF/Src/UnitTest
-    sudo -E ./UnitTest 2>&1 | tee ~/fdo_sdf_unit_test.log
+    sudo rm providers.xml
+    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee ~/fdo_sdf_unit_test.log
     check_test
     BUILD_COMPONENT="Unit Test SQLite Provider"
     cd $SCRIPT_ROOT/fdo_build_area/Providers/SQLite/Src/UnitTest
-    sudo -E ./UnitTest 2>&1 | tee ~/fdo_sqlite_unit_test.log
+    sudo rm providers.xml
+    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee ~/fdo_sqlite_unit_test.log
     check_test
     BUILD_COMPONENT="Unit Test GDAL Provider"
     cd $SCRIPT_ROOT/fdo_build_area/Providers/GDAL/Src/UnitTest
-    sudo -E ./UnitTest 2>&1 | tee ~/fdo_gdal_unit_test.log
+    sudo rm providers.xml
+    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee ~/fdo_gdal_unit_test.log
     check_test
+    BUILD_COMPONENT="Unit Test OGR Provider"
+    cd $SCRIPT_ROOT/fdo_build_area/Providers/OGR/Src/UnitTest
+    sudo rm providers.xml
+    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee ~/fdo_ogr_unit_test.log
+    check_test
     BUILD_COMPONENT="Unit Test WMS Provider"
     cd $SCRIPT_ROOT/fdo_build_area/Providers/WMS/Src/UnitTest
-    sudo -E ./UnitTest 2>&1 | tee ~/fdo_wms_unit_test.log
+    sudo rm providers.xml
+    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee ~/fdo_wms_unit_test.log
     check_test
 fi
 if [ $MG_UNIT_TEST -eq 1 ];
@@ -293,7 +296,7 @@
     cd $SCRIPT_ROOT/mgdev/Server/src/Core
     sudo make unittest.sh
     # Run the test suites individually except for TileService/ResourceService for reasons already stated
-    for comp in CoordinateSystem FeatureService Geometry KmlService LogManager MdfModel Misc RenderingService ServerAdminService ServerManager ServiceManager SiteManager SiteService ProfilingService TransformMesh
+    for comp in CoordinateSystem FeatureService Geometry KmlService LogManager MappingService MdfModel Misc Performance RenderingService ServerAdminService ServerManager ServiceManager SiteManager SiteService ProfilingService TransformMesh
     do
         sudo -E ./mgserver test $comp UnitTestResults_${comp}.xml 2>&1 | tee ~/mapguide_${comp}_unit_test.log
         check_test
@@ -301,6 +304,8 @@
             sudo mv UnitTestResults_${comp}.xml ~/UnitTestResults_${comp}.xml
         fi
     done
+    cd $SCRIPT_ROOT/mgdev
+    sudo -E ./run_tests.sh --prefix ${MG_INST_PATH} --with-php --with-java --logpath ~
 fi
 cd $SCRIPT_ROOT
 echo [provision]: Make output dir
@@ -308,15 +313,15 @@
 echo [provision]: Copy log files to output dir
 sudo mv -f ~/*.log /vagrant/build
 echo [provision]: Copy tarballs to output dir
-sudo cp bin/*.tar.gz /vagrant/build
-sudo cp fdosdk-centos6-i386-${FDO_VER_FULL}_${FDO_REV}.tar.gz /vagrant/build
+sudo cp bin/*.tar.xz /vagrant/build
+sudo cp fdosdk-centos6-i386-${FDO_VER_FULL}_${FDO_REV}.tar.xz /vagrant/build
 if [ $MAKE_FDO_SDK -eq 1 ]; then
     echo [provision]: Copy FDO SDK for Ubuntu builds
     # Copy SDK also to sources, so Ubuntu can pick it up
-    sudo rm -f /mapguide_sources/fdosdk*.tar.gz
-    sudo cp fdosdk-centos6-i386-${FDO_VER_FULL}_${FDO_REV}.tar.gz /mapguide_sources
+    sudo rm -f /mapguide_sources/fdosdk*.tar.xz
+    sudo cp fdosdk-centos6-i386-${FDO_VER_FULL}_${FDO_REV}.tar.zx /mapguide_sources
     # Record file name so Ubuntu knows what tarball to extract from
-    sudo echo fdosdk-centos6-i386-${FDO_VER_FULL}_${FDO_REV}.tar.gz > /mapguide_sources/fdosdk_filename
+    sudo echo fdosdk-centos6-i386-${FDO_VER_FULL}_${FDO_REV}.tar.xz > /mapguide_sources/fdosdk_filename
     sudo echo ${FDO_REV} > /mapguide_sources/fdosdk_rev
     # Export filelist to Ubuntu can deb package this SDK if needed
     sudo cp -R $SCRIPT_ROOT/fdo_build_area/install/filelist /mapguide_sources
@@ -326,22 +331,11 @@
 sudo mv ~/fdo_*_unit_test.log /vagrant/build
 sudo mv ~/UnitTestResults_*.xml /vagrant/build
 echo [provision]: Copy install/uninstall scripts to output dir
+sudo sed -i 's/URL_PART="centos"/URL_PART="centos_x86"/g' /vagrant/build/mginstallcentos.sh
 sudo cp /vagrant/mginstallcentos.sh /vagrant/build/mginstallcentos.sh
+sudo cp /vagrant/mguninstallcentos.sh /vagrant/build/mguninstallcentos.sh
 sudo sed -i 's/FDOVER_REV=0/FDOVER_REV='"$FDO_REV"'/g' /vagrant/build/mginstallcentos.sh
 sudo sed -i 's/MGVER_REV=0/MGVER_REV='"$MG_REV"'/g' /vagrant/build/mginstallcentos.sh
-if [ ! -d /mapguide_sources/updated ]; then
-    sudo mkdir -p /mapguide_sources/updated
-    cd $MG_SRC_ROOT
-    echo [provision]: Updating mapguide source tarball
-    tar -zcf $MG_TARBALL MgDev
-    sudo mv $MG_TARBALL /mapguide_sources/updated
-    cd $FDO_SRC_ROOT
-    echo [provision]: Updating fdo source tarball
-    tar -zcf $FDO_TARBALL $FDO_SRC_DIR
-    sudo mv $FDO_TARBALL /mapguide_sources/updated
-else
-    echo [provision]: Updated tarballs already exist. Doing nothing
-fi
 echo [provision]: Build complete
 SCRIPT
   

Modified: branches/2.6/vagrant/clean.bat
===================================================================
--- branches/2.6/vagrant/clean.bat	2015-07-27 12:14:02 UTC (rev 8718)
+++ branches/2.6/vagrant/clean.bat	2015-07-27 12:26:06 UTC (rev 8719)
@@ -8,6 +8,9 @@
 if exist fdosdk_rev del /F fdosdk_rev
 del /F fdosdk*.tar.gz
 popd
+pushd centos\src_update
+call vagrant destroy -f
+popd
 pushd ubuntu\x86
 SET COMPONENT=Ubuntu Build 32-bit
 echo [clean]: MapGuide Ubuntu build 32-bit

Added: branches/2.6/vagrant/make_boxes.bat
===================================================================
--- branches/2.6/vagrant/make_boxes.bat	                        (rev 0)
+++ branches/2.6/vagrant/make_boxes.bat	2015-07-27 12:26:06 UTC (rev 8719)
@@ -0,0 +1,35 @@
+ at echo off
+SET BUILD_UBUNTU_32=1
+SET BUILD_UBUNTU_64=1
+SET BUILD_CENTOS_32=1
+SET BUILD_CENTOS_64=1
+pushd packer
+if "%BUILD_CENTOS_64%" == "1" (
+echo [packer]: Build CentOS 64-bit base box
+packer build -force centos6-amd64.json | tee packer_centos64.log
+echo [vagrant]: Export centos6-amd64 base box
+rem call vagrant package --base "centos6-amd64" --output centos6-amd64.box
+call vagrant box add "centos6-amd64" centos6-amd64.box --force
+)
+if "%BUILD_CENTOS_32%" == "1" (
+echo [packer]: Build CentOS 32-bit base box
+packer build -force centos6-i386.json | tee packer_centos32.log
+echo [vagrant]: Export centos6-i386 base box
+rem call vagrant package --base "centos6-i386" --output centos6-i386.box
+call vagrant box add "centos6-i386" centos6-i386.box --force
+)
+if "%BUILD_UBUNTU_64%" == "1" (
+echo [packer]: Build Ubuntu 64-bit base box
+packer build -force ubuntu12-amd64.json | tee packer_ubuntu64.log
+echo [vagrant]: Export ubuntu12-amd64 base box
+rem call vagrant package --base "ubuntu12-amd64" --output ubuntu12-amd64.box
+call vagrant box add "ubuntu12-amd64" ubuntu12-amd64.box --force
+)
+if "%BUILD_UBUNTU_32%" == "1" (
+echo [packer]: Build Ubuntu 32-bit base box
+packer build -force ubuntu12-i386.json | tee packer_ubuntu32.log
+echo [vagrant]: Export ubuntu12-i386 base box
+rem call vagrant package --base "ubuntu12-i386" --output ubuntu12-i386.box
+call vagrant box add "ubuntu12-i386" ubuntu12-i386.box --force
+)
+popd
\ No newline at end of file

Added: branches/2.6/vagrant/md5sums.bat
===================================================================
--- branches/2.6/vagrant/md5sums.bat	                        (rev 0)
+++ branches/2.6/vagrant/md5sums.bat	2015-07-27 12:26:06 UTC (rev 8719)
@@ -0,0 +1,68 @@
+ at echo off
+
+rem md5sums.bat
+rem
+rem (Re)generates MD5 hashes for the various MapGuide build artifacts
+
+SET ROOT=%CD%
+
+:check_ubuntu32
+if exist %ROOT%\builds\ubuntu_x86 goto md5_ubuntu32
+goto check_ubuntu64
+:md5_ubuntu32
+echo [md5]: Ubuntu 32-bit
+pushd %ROOT%\builds\ubuntu_x86
+if exist md5sums.txt del md5sums.txt
+dir > filelist.txt
+md5sum *.sh > md5sums.txt
+md5sum *.deb >> md5sums.txt
+popd
+
+:check_ubuntu64
+if exist %ROOT%\builds\ubuntu_x64 goto md5_ubuntu64
+goto check_centos32
+:md5_ubuntu64
+echo [md5]: Ubuntu 64-bit
+pushd %ROOT%\builds\ubuntu_x64
+if exist md5sums.txt del md5sums.txt
+dir > filelist.txt
+md5sum *.sh > md5sums.txt
+md5sum *.deb >> md5sums.txt
+popd
+
+:check_centos32
+if exist %ROOT%\builds\centos_x86 goto md5_centos32
+goto check_centos64
+:md5_centos32
+echo [md5]: CentOS 32-bit
+pushd %ROOT%\builds\centos_x86
+dir > filelist.txt
+if exist md5sums.txt del md5sums.txt
+md5sum *.sh > md5sums.txt
+md5sum *.tar.xz >> md5sums.txt
+popd
+
+:check_centos64
+if exist %ROOT%\builds\centos_x64 goto md5_centos64
+goto check_windows
+:md5_centos64
+echo [md5]: CentOS 64-bit
+pushd %ROOT%\builds\centos_x64
+if exist md5sums.txt del md5sums.txt
+dir > filelist.txt
+md5sum *.sh > md5sums.txt
+md5sum *.tar.xz >> md5sums.txt
+popd
+
+:check_windows
+if exist %ROOT%\builds\windows goto md5_windows
+goto done
+:md5_windows
+echo [md5]: Windows
+pushd %ROOT%\builds\windows
+if exist md5sums.txt del md5sums.txt
+dir > filelist.txt
+md5sum *.exe > md5sums.txt
+popd
+
+:done
\ No newline at end of file

Added: branches/2.6/vagrant/packer/centos6-amd64.json
===================================================================
--- branches/2.6/vagrant/packer/centos6-amd64.json	                        (rev 0)
+++ branches/2.6/vagrant/packer/centos6-amd64.json	2015-07-27 12:26:06 UTC (rev 8719)
@@ -0,0 +1,54 @@
+{
+  "builders": [{
+    "type": "virtualbox-iso",
+    "guest_os_type": "RedHat_64",
+    "iso_url": "{{user `mirror`}}/6.5/isos/x86_64/CentOS-6.5-x86_64-minimal.iso",
+    "iso_checksum": "0d9dc37b5dd4befa1c440d2174e88a87",
+    "iso_checksum_type": "md5",
+    "output_directory": "output-centos-6.5-x86_64",
+    "vm_name": "packer-centos-6.5-x86_64",
+    "disk_size": "{{user `disk_size`}}",
+    "headless": "{{user `headless`}}",
+    "http_directory": "http",
+    "boot_wait": "5s",
+    "boot_command": [
+      "<esc>",
+      "<wait>",
+      "linux ks=http://{{.HTTPIP}}:{{.HTTPPort}}/centos-6.5/anaconda-ks.cfg",
+      "<enter>"
+    ],
+    "ssh_wait_timeout": "60m",
+    "ssh_username": "vagrant",
+    "ssh_password": "vagrant",
+    "shutdown_command": "sudo poweroff",
+    "vboxmanage": [
+      ["modifyvm", "{{.Name}}", "--memory", "{{user `memory`}}"],
+      ["modifyvm", "{{.Name}}", "--cpus", "{{user `cpus`}}"]
+    ]
+  }],
+  "provisioners": [{
+    "type": "shell",
+    "scripts": [
+      "scripts/centos-6.5/base.sh",
+      "scripts/centos/virtualbox.sh",
+      "scripts/common/vagrant.sh",
+      "scripts/common/sshd.sh",
+      "scripts/mapguide/centos64.sh",
+      "scripts/centos-6.5/cleanup.sh",
+      "scripts/common/minimize.sh"
+    ]
+  }],
+  "post-processors": [{
+    "type": "vagrant",
+    "compression_level": "{{user `compression_level`}}",
+    "output": "centos6-amd64.box"
+  }],
+  "variables": {
+    "compression_level": 1,
+    "cpus": "2",
+    "disk_size": 25000,
+    "headless": false,
+    "memory": "1024",
+    "mirror": "http://mirror.internode.on.net/pub/centos"
+  }
+}

Added: branches/2.6/vagrant/packer/centos6-i386.json
===================================================================
--- branches/2.6/vagrant/packer/centos6-i386.json	                        (rev 0)
+++ branches/2.6/vagrant/packer/centos6-i386.json	2015-07-27 12:26:06 UTC (rev 8719)
@@ -0,0 +1,54 @@
+{
+  "builders": [{
+    "type": "virtualbox-iso",
+    "guest_os_type": "RedHat",
+    "iso_url": "{{user `mirror`}}/6.5/isos/i386/CentOS-6.5-i386-minimal.iso",
+    "iso_checksum": "a4f27ab51d0d2c9d36b68c56b39f752b",
+    "iso_checksum_type": "md5",
+    "output_directory": "output-centos-6.5-i386",
+    "vm_name": "packer-centos-6.5-i386",
+    "disk_size": "{{user `disk_size`}}",
+    "headless": "{{user `headless`}}",
+    "http_directory": "http",
+    "boot_wait": "5s",
+    "boot_command": [
+      "<esc>",
+      "<wait>",
+      "linux ks=http://{{.HTTPIP}}:{{.HTTPPort}}/centos-6.5/anaconda-ks.cfg",
+      "<enter>"
+    ],
+    "ssh_wait_timeout": "60m",
+    "ssh_username": "vagrant",
+    "ssh_password": "vagrant",
+    "shutdown_command": "sudo poweroff",
+    "vboxmanage": [
+      ["modifyvm", "{{.Name}}", "--memory", "{{user `memory`}}"],
+      ["modifyvm", "{{.Name}}", "--cpus", "{{user `cpus`}}"]
+    ]
+  }],
+  "provisioners": [{
+    "type": "shell",
+    "scripts": [
+      "scripts/centos-6.5/base.sh",
+      "scripts/centos/virtualbox.sh",
+      "scripts/common/vagrant.sh",
+      "scripts/common/sshd.sh",
+      "scripts/mapguide/centos32.sh",
+      "scripts/centos-6.5/cleanup.sh",
+      "scripts/common/minimize.sh"
+    ]
+  }],
+  "post-processors": [{
+    "type": "vagrant",
+    "compression_level": "{{user `compression_level`}}",
+    "output": "centos6-i386.box"
+  }],
+  "variables": {
+    "compression_level": 1,
+    "cpus": "2",
+    "disk_size": 25000,
+    "headless": false,
+    "memory": "1024",
+    "mirror": "http://mirror.internode.on.net/pub/centos"
+  }
+}

Added: branches/2.6/vagrant/packer/http/centos-6.5/anaconda-ks.cfg
===================================================================
--- branches/2.6/vagrant/packer/http/centos-6.5/anaconda-ks.cfg	                        (rev 0)
+++ branches/2.6/vagrant/packer/http/centos-6.5/anaconda-ks.cfg	2015-07-27 12:26:06 UTC (rev 8719)
@@ -0,0 +1,45 @@
+install
+text
+reboot
+cdrom
+lang en_US.UTF-8
+keyboard us
+timezone --utc Etc/UTC
+rootpw --plaintext vagrant
+zerombr
+clearpart --all
+part /boot --size=200
+part swap --recommended
+part / --size=1 --grow
+bootloader
+
+%packages --nobase
+ at core
+-b43-openfwwf
+-device-mapper-multipath
+-efibootmgr
+-iscsi-initiator-utils
+-lvm2
+-mdadm
+%end
+
+%post --erroronfail
+yum -y update
+
+useradd -m -U vagrant
+echo 'vagrant' | passwd --stdin vagrant
+cat <<EOF > /etc/sudoers.d/vagrant
+Defaults:vagrant !requiretty
+vagrant ALL=(ALL) NOPASSWD: ALL
+EOF
+chmod 440 /etc/sudoers.d/vagrant
+
+rm /etc/udev/rules.d/70-persistent-net.rules
+ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
+cat > /etc/sysconfig/network-scripts/ifcfg-eth0 <<EOF
+DEVICE="eth0"
+BOOTPROTO="dhcp"
+ONBOOT="yes"
+TYPE="Ethernet"
+EOF
+%end

Added: branches/2.6/vagrant/packer/http/ubuntu/preseed.cfg
===================================================================
--- branches/2.6/vagrant/packer/http/ubuntu/preseed.cfg	                        (rev 0)
+++ branches/2.6/vagrant/packer/http/ubuntu/preseed.cfg	2015-07-27 12:26:06 UTC (rev 8719)
@@ -0,0 +1,51 @@
+d-i debian-installer/locale string en_US
+d-i time/zone string UTC
+
+d-i keyboard-configuration/xkb-keymap select us
+
+d-i partman-auto/method string regular
+d-i partman-auto/expert_recipe string \
+        scheme ::                     \
+        200 0 200 ext4                \
+                $primary{ }           \
+                $bootable{ }          \
+                method{ format }      \
+                format{ }             \
+                use_filesystem{ }     \
+                filesystem{ ext4 }    \
+                mountpoint{ /boot } . \
+        200% 0 200% linux-swap        \
+                $primary{ }           \
+                method{ swap }        \
+                format{ } .           \
+        1 0 -1 ext4                   \
+                $primary{ }           \
+                method{ format }      \
+                format{ }             \
+                use_filesystem{ }     \
+                filesystem{ ext4 }    \
+                mountpoint{ / } .
+d-i partman-partitioning/confirm_write_new_label boolean true
+d-i partman/choose_partition select finish
+d-i partman/confirm boolean true
+d-i partman/confirm_nooverwrite boolean true
+
+d-i base-installer/excludes string laptop-detect
+
+d-i passwd/root-password-again password vagrant
+d-i passwd/root-password password vagrant
+d-i passwd/user-fullname string vagrant
+d-i passwd/username string vagrant
+d-i passwd/user-password password vagrant
+d-i passwd/user-password-again password vagrant
+d-i user-setup/allow-password-weak boolean true
+
+d-i pkgsel/include string aptitude curl openssh-server sudo
+d-i pkgsel/language-packs multiselect
+
+d-i finish-install/reboot_in_progress note
+
+d-i preseed/early_command string                                                                                                                \
+        mkdir -p /usr/lib/post-base-installer.d &&                                                                                              \
+        echo "sed -i -e 's/^in-target.*tasksel.*/#\\0/' /var/lib/dpkg/info/pkgsel.postinst" > /usr/lib/post-base-installer.d/90skip-tasksel &&  \
+        chmod +x /usr/lib/post-base-installer.d/90skip-tasksel

Added: branches/2.6/vagrant/packer/http/ubuntu-12.04.5/preseed.cfg
===================================================================
--- branches/2.6/vagrant/packer/http/ubuntu-12.04.5/preseed.cfg	                        (rev 0)
+++ branches/2.6/vagrant/packer/http/ubuntu-12.04.5/preseed.cfg	2015-07-27 12:26:06 UTC (rev 8719)
@@ -0,0 +1,6 @@
+d-i preseed/include string ../ubuntu/preseed.cfg
+
+d-i preseed/late_command string                                                   \
+        echo 'Defaults:vagrant !requiretty' > /target/etc/sudoers.d/vagrant;      \
+        echo 'vagrant ALL=(ALL) NOPASSWD: ALL' >> /target/etc/sudoers.d/vagrant;  \
+        chmod 440 /target/etc/sudoers.d/vagrant

Added: branches/2.6/vagrant/packer/http/ubuntu-14.04/preseed.cfg
===================================================================
--- branches/2.6/vagrant/packer/http/ubuntu-14.04/preseed.cfg	                        (rev 0)
+++ branches/2.6/vagrant/packer/http/ubuntu-14.04/preseed.cfg	2015-07-27 12:26:06 UTC (rev 8719)
@@ -0,0 +1,6 @@
+d-i preseed/include string ../ubuntu/preseed.cfg
+
+d-i preseed/late_command string                                                   \
+        echo 'Defaults:vagrant !requiretty' > /target/etc/sudoers.d/vagrant;      \
+        echo 'vagrant ALL=(ALL) NOPASSWD: ALL' >> /target/etc/sudoers.d/vagrant;  \
+        chmod 440 /target/etc/sudoers.d/vagrant

Added: branches/2.6/vagrant/packer/scripts/centos/virtualbox.sh
===================================================================
--- branches/2.6/vagrant/packer/scripts/centos/virtualbox.sh	                        (rev 0)
+++ branches/2.6/vagrant/packer/scripts/centos/virtualbox.sh	2015-07-27 12:26:06 UTC (rev 8719)
@@ -0,0 +1,16 @@
+#!/bin/bash
+
+set -e
+set -x
+
+sudo yum -y --enablerepo=epel install dkms
+sudo yum -y install make
+sudo yum -y install perl
+
+# Uncomment this if you want to install Guest Additions with support for X
+#sudo yum -y install xorg-x11-server-Xorg
+
+sudo mount -o loop ~/VBoxGuestAdditions.iso /mnt/
+sudo /mnt/VBoxLinuxAdditions.run || :
+sudo umount /mnt/
+rm -f ~/VBoxGuestAdditions.iso

Added: branches/2.6/vagrant/packer/scripts/centos-6.5/base.sh
===================================================================
--- branches/2.6/vagrant/packer/scripts/centos-6.5/base.sh	                        (rev 0)
+++ branches/2.6/vagrant/packer/scripts/centos-6.5/base.sh	2015-07-27 12:26:06 UTC (rev 8719)
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+set -e
+set -x
+
+sudo yum -y install https://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
+sudo sed -i -e 's/^enabled=1/enabled=0/' /etc/yum.repos.d/epel.repo
+
+sudo sed -i -e 's,^ACTIVE_CONSOLES=.*$,ACTIVE_CONSOLES=/dev/tty1,' /etc/sysconfig/init

Added: branches/2.6/vagrant/packer/scripts/centos-6.5/cleanup.sh
===================================================================
--- branches/2.6/vagrant/packer/scripts/centos-6.5/cleanup.sh	                        (rev 0)
+++ branches/2.6/vagrant/packer/scripts/centos-6.5/cleanup.sh	2015-07-27 12:26:06 UTC (rev 8719)
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+set -e
+set -x
+
+sudo yum clean all
+sudo yum history new
+sudo truncate -c -s 0 /var/log/yum.log

Added: branches/2.6/vagrant/packer/scripts/common/minimize.sh
===================================================================
--- branches/2.6/vagrant/packer/scripts/common/minimize.sh	                        (rev 0)
+++ branches/2.6/vagrant/packer/scripts/common/minimize.sh	2015-07-27 12:26:06 UTC (rev 8719)
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+set -e
+set -x
+
+dd if=/dev/zero of=EMPTY bs=1M || :
+rm EMPTY

Added: branches/2.6/vagrant/packer/scripts/common/sshd.sh
===================================================================
--- branches/2.6/vagrant/packer/scripts/common/sshd.sh	                        (rev 0)
+++ branches/2.6/vagrant/packer/scripts/common/sshd.sh	2015-07-27 12:26:06 UTC (rev 8719)
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+set -e
+set -x
+
+sudo tee -a /etc/ssh/sshd_config <<EOF
+
+UseDNS no
+EOF

Added: branches/2.6/vagrant/packer/scripts/common/vagrant.sh
===================================================================
--- branches/2.6/vagrant/packer/scripts/common/vagrant.sh	                        (rev 0)
+++ branches/2.6/vagrant/packer/scripts/common/vagrant.sh	2015-07-27 12:26:06 UTC (rev 8719)
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+set -e
+set -x
+
+date | sudo tee /etc/vagrant_box_build_time
+
+mkdir -p ~/.ssh
+curl -fsSLo ~/.ssh/authorized_keys https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub
+chmod 700 ~/.ssh/
+chmod 600 ~/.ssh/authorized_keys
+
+if [ -f /etc/sudoers ] ; then
+    sudo sed -i "s/^.*requiretty/#Defaults requiretty/" /etc/sudoers
+    sudo sed -i "s/^\(.*env_keep = \"\)/\1PATH /" /etc/sudoers
+    sudo sed -i -e 's/%admin ALL=(ALL) ALL/%admin ALL=NOPASSWD:ALL/g' /etc/sudoers
+    sudo sed -i -e 's/%sudo.*ALL=.*ALL/%sudo ALL=NOPASSWD:ALL/g' /etc/sudoers
+fi
\ No newline at end of file

Added: branches/2.6/vagrant/packer/scripts/mapguide/centos32.sh
===================================================================
--- branches/2.6/vagrant/packer/scripts/mapguide/centos32.sh	                        (rev 0)
+++ branches/2.6/vagrant/packer/scripts/mapguide/centos32.sh	2015-07-27 12:26:06 UTC (rev 8719)
@@ -0,0 +1,7 @@
+#!/bin/bash
+sudo yum install -y gcc make gcc-c++ gd-* automake bison byacc flex doxygen expat expat-devel libtool libjpeg-devel libpng libpng-devel libxml2 libxml2-devel openssl curl curl-devel libxslt libxslt-devel subversion java-1.7.0-openjdk java-1.7.0-openjdk-devel ant dos2unix openssh-server openldap-devel alsa-lib-devel pcre-devel unixODBC-devel libcom_err-devel krb5-devel openssl-devel mysql-devel postgresql-devel unixODBC
+# For producing .tar.xz archives
+sudo yum install -y xz-lzma-compat
+# To support Java test suite
+sudo yum install -y ant-contrib
+echo "JAVA_HOME=/usr/lib/jvm/java-openjdk" | sudo tee --append /etc/environment
\ No newline at end of file

Added: branches/2.6/vagrant/packer/scripts/mapguide/centos64.sh
===================================================================
--- branches/2.6/vagrant/packer/scripts/mapguide/centos64.sh	                        (rev 0)
+++ branches/2.6/vagrant/packer/scripts/mapguide/centos64.sh	2015-07-27 12:26:06 UTC (rev 8719)
@@ -0,0 +1,9 @@
+#!/bin/bash
+sudo yum install -y gcc make gcc-c++ gd-* automake bison byacc flex doxygen expat expat-devel libtool libjpeg-devel libpng libpng-devel libxml2 libxml2-devel openssl curl curl-devel libxslt libxslt-devel subversion java-1.7.0-openjdk java-1.7.0-openjdk-devel ant dos2unix openssh-server openldap-devel alsa-lib-devel pcre-devel unixODBC-devel libcom_err-devel krb5-devel openssl-devel mysql-devel postgresql-devel unixODBC
+# For producing .tar.xz archives
+sudo yum install -y xz-lzma-compat
+# For 32-bit swig binary in MapGuide source
+sudo yum install -y libstdc++.i686 glibc.i686
+# To support Java test suite
+sudo yum install -y ant-contrib
+echo "JAVA_HOME=/usr/lib/jvm/java-openjdk" | sudo tee --append /etc/environment
\ No newline at end of file

Added: branches/2.6/vagrant/packer/scripts/mapguide/ubuntu32.sh
===================================================================
--- branches/2.6/vagrant/packer/scripts/mapguide/ubuntu32.sh	                        (rev 0)
+++ branches/2.6/vagrant/packer/scripts/mapguide/ubuntu32.sh	2015-07-27 12:26:06 UTC (rev 8719)
@@ -0,0 +1,15 @@
+#!/bin/bash
+# Set bash as the default shell
+echo "dash    dash/sh boolean false" | sudo debconf-set-selections
+sudo dpkg-reconfigure --frontend=noninteractive dash
+# Guard against (http://askubuntu.com/questions/41605/trouble-downloading-updates-due-to-a-hash-sum-mismatch-error)
+sudo rm -rf /var/lib/apt/lists/*
+sudo apt-get update
+sudo apt-get install -y build-essential bison automake libtool libpng-dev libjpeg62-dev libxslt-dev libfreetype6-dev libpcre3-dev openjdk-7-jdk subversion lintian ant scons dos2unix liboss4-salsa-dev libldap-dev libssl-dev libcurl4-openssl-dev libexpat-dev libmysqlclient-dev unixODBC-dev python-dev libpq-dev libcppunit-dev
+# For producing .tar.xz archives
+sudo apt-get install -y xz-utils
+# For deb packaging
+sudo apt-get install -y rsync
+# To support Java test suite
+sudo apt-get install -y ant-contrib
+echo "JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-i386" | sudo tee --append /etc/environment
\ No newline at end of file

Added: branches/2.6/vagrant/packer/scripts/mapguide/ubuntu64.sh
===================================================================
--- branches/2.6/vagrant/packer/scripts/mapguide/ubuntu64.sh	                        (rev 0)
+++ branches/2.6/vagrant/packer/scripts/mapguide/ubuntu64.sh	2015-07-27 12:26:06 UTC (rev 8719)
@@ -0,0 +1,17 @@
+#!/bin/bash
+# Set bash as the default shell
+echo "dash    dash/sh boolean false" | sudo debconf-set-selections
+sudo dpkg-reconfigure --frontend=noninteractive dash
+# Guard against (http://askubuntu.com/questions/41605/trouble-downloading-updates-due-to-a-hash-sum-mismatch-error)
+sudo rm -rf /var/lib/apt/lists/*
+sudo apt-get update
+sudo apt-get install -y build-essential bison automake libtool libpng-dev libjpeg62-dev libxslt-dev libfreetype6-dev libpcre3-dev openjdk-7-jdk subversion lintian ant scons dos2unix liboss4-salsa-dev libldap-dev libssl-dev libcurl4-openssl-dev libexpat-dev libmysqlclient-dev unixODBC-dev python-dev libpq-dev libcppunit-dev
+# For producing .tar.xz archives
+sudo apt-get install -y xz-utils
+# For deb packaging
+sudo apt-get install -y rsync
+# For 32-bit swig binary in MapGuide source
+sudo apt-get install -y g++-multilib
+# To support Java test suite
+sudo apt-get install -y ant-contrib
+echo "JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64" | sudo tee --append /etc/environment
\ No newline at end of file

Added: branches/2.6/vagrant/packer/scripts/ubuntu/base.sh
===================================================================
--- branches/2.6/vagrant/packer/scripts/ubuntu/base.sh	                        (rev 0)
+++ branches/2.6/vagrant/packer/scripts/ubuntu/base.sh	2015-07-27 12:26:06 UTC (rev 8719)
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+set -e
+set -x
+
+sudo sed -i -e 's,^\(ACTIVE_CONSOLES="/dev/tty\).*,\11",' /etc/default/console-setup
+for f in /etc/init/tty[^1]*.conf; do
+  sudo mv "$f"{,.bak}
+done

Added: branches/2.6/vagrant/packer/scripts/ubuntu/cleanup.sh
===================================================================
--- branches/2.6/vagrant/packer/scripts/ubuntu/cleanup.sh	                        (rev 0)
+++ branches/2.6/vagrant/packer/scripts/ubuntu/cleanup.sh	2015-07-27 12:26:06 UTC (rev 8719)
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+set -e
+set -x
+
+sudo aptitude -y clean

Added: branches/2.6/vagrant/packer/scripts/ubuntu/virtualbox.sh
===================================================================
--- branches/2.6/vagrant/packer/scripts/ubuntu/virtualbox.sh	                        (rev 0)
+++ branches/2.6/vagrant/packer/scripts/ubuntu/virtualbox.sh	2015-07-27 12:26:06 UTC (rev 8719)
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+set -e
+set -x
+
+sudo aptitude -y install dkms
+sudo aptitude -y install make
+
+# Uncomment this if you want to install Guest Additions with support for X
+#sudo aptitude -y install xserver-xorg
+
+sudo mount -o loop ~/VBoxGuestAdditions.iso /mnt/
+sudo /mnt/VBoxLinuxAdditions.run || :
+sudo umount /mnt/
+rm -f ~/VBoxGuestAdditions.iso
+
+VBOX_VERSION=$(cat ~/.vbox_version)
+if [ "$VBOX_VERSION" == '4.3.10' ]; then
+  # https://www.virtualbox.org/ticket/12879
+  sudo ln -s "/opt/VBoxGuestAdditions-$VBOX_VERSION/lib/VBoxGuestAdditions" /usr/lib/VBoxGuestAdditions
+fi

Added: branches/2.6/vagrant/packer/ubuntu12-amd64.json
===================================================================
--- branches/2.6/vagrant/packer/ubuntu12-amd64.json	                        (rev 0)
+++ branches/2.6/vagrant/packer/ubuntu12-amd64.json	2015-07-27 12:26:06 UTC (rev 8719)
@@ -0,0 +1,57 @@
+{
+  "builders": [{
+    "type": "virtualbox-iso",
+    "guest_os_type": "Ubuntu_64",
+    "iso_url": "http://mirror.internode.on.net.au/pub/ubuntu/releases/12.04/ubuntu-12.04.5-server-amd64.iso",
+    "iso_checksum": "769474248a3897f4865817446f9a4a53",
+    "iso_checksum_type": "md5",
+    "output_directory": "output-ubuntu-12.04.5-amd64",
+    "vm_name": "packer-ubuntu-12.04.5-amd64",
+    "disk_size": "{{user `disk_size`}}",
+    "headless": "{{user `headless`}}",
+    "http_directory": "http",
+    "boot_wait": "5s",
+    "boot_command": [
+      "<esc><wait>",
+      "<esc><wait>",
+      "<enter><wait>",
+      "install ",
+      "auto-install/enable=true ",
+      "debconf/priority=critical ",
+      "preseed/url=http://{{.HTTPIP}}:{{.HTTPPort}}/ubuntu-12.04.5/preseed.cfg ",
+      "<enter>"
+    ],
+    "ssh_wait_timeout": "60m",
+    "ssh_username": "vagrant",
+    "ssh_password": "vagrant",
+    "shutdown_command": "sudo poweroff",
+    "vboxmanage": [
+      ["modifyvm", "{{.Name}}", "--memory", "{{user `memory`}}"],
+      ["modifyvm", "{{.Name}}", "--cpus", "{{user `cpus`}}"]
+    ]
+  }],
+  "provisioners": [{
+    "type": "shell",
+    "scripts": [
+      "scripts/ubuntu/base.sh",
+      "scripts/ubuntu/virtualbox.sh",
+      "scripts/common/vagrant.sh",
+      "scripts/common/sshd.sh",
+      "scripts/mapguide/ubuntu64.sh",
+      "scripts/ubuntu/cleanup.sh",
+      "scripts/common/minimize.sh"
+    ]
+  }],
+  "post-processors": [{
+    "type": "vagrant",
+    "compression_level": "{{user `compression_level`}}",
+    "output": "ubuntu12-amd64.box"
+  }],
+  "variables": {
+    "compression_level": 1,
+    "cpus": "2",
+    "disk_size": 25000,
+    "headless": false,
+    "memory": "1024"
+  }
+}

Added: branches/2.6/vagrant/packer/ubuntu12-i386.json
===================================================================
--- branches/2.6/vagrant/packer/ubuntu12-i386.json	                        (rev 0)
+++ branches/2.6/vagrant/packer/ubuntu12-i386.json	2015-07-27 12:26:06 UTC (rev 8719)
@@ -0,0 +1,57 @@
+{
+  "builders": [{
+    "type": "virtualbox-iso",
+    "guest_os_type": "Ubuntu",
+    "iso_url": "http://mirror.internode.on.net.au/pub/ubuntu/releases/12.04/ubuntu-12.04.5-server-i386.iso",
+    "iso_checksum": "1214cd22448338b60bb24f583dd8741a",
+    "iso_checksum_type": "md5",
+    "output_directory": "output-ubuntu-12.04.5-i386",
+    "vm_name": "packer-ubuntu-12.04.5-i386",
+    "disk_size": "{{user `disk_size`}}",
+    "headless": "{{user `headless`}}",
+    "http_directory": "http",
+    "boot_wait": "5s",
+    "boot_command": [
+      "<esc><wait>",
+      "<esc><wait>",
+      "<enter><wait>",
+      "install ",
+      "auto-install/enable=true ",
+      "debconf/priority=critical ",
+      "preseed/url=http://{{.HTTPIP}}:{{.HTTPPort}}/ubuntu-12.04.5/preseed.cfg ",
+      "<enter>"
+    ],
+    "ssh_wait_timeout": "60m",
+    "ssh_username": "vagrant",
+    "ssh_password": "vagrant",
+    "shutdown_command": "sudo poweroff",
+    "vboxmanage": [
+      ["modifyvm", "{{.Name}}", "--memory", "{{user `memory`}}"],
+      ["modifyvm", "{{.Name}}", "--cpus", "{{user `cpus`}}"]
+    ]
+  }],
+  "provisioners": [{
+    "type": "shell",
+    "scripts": [
+      "scripts/ubuntu/base.sh",
+      "scripts/ubuntu/virtualbox.sh",
+      "scripts/common/vagrant.sh",
+      "scripts/common/sshd.sh",
+      "scripts/mapguide/ubuntu32.sh",
+      "scripts/ubuntu/cleanup.sh",
+      "scripts/common/minimize.sh"
+    ]
+  }],
+  "post-processors": [{
+    "type": "vagrant",
+    "compression_level": "{{user `compression_level`}}",
+    "output": "ubuntu12-i386.box"
+  }],
+  "variables": {
+    "compression_level": 1,
+    "cpus": "2",
+    "disk_size": 25000,
+    "headless": false,
+    "memory": "1024"
+  }
+}

Added: branches/2.6/vagrant/scripts/build.ps1
===================================================================
--- branches/2.6/vagrant/scripts/build.ps1	                        (rev 0)
+++ branches/2.6/vagrant/scripts/build.ps1	2015-07-27 12:26:06 UTC (rev 8719)
@@ -0,0 +1,1151 @@
+<#
+.SYNOPSIS
+    Builds the MapGuide Open Source codebase
+.DESCRIPTION
+    This PowerShell script will build the entire MapGuide Open Source codebase, which consists of
+        - Oem components
+        - Server tier
+        - Web tier
+        - Documentation
+        - Windows Installer
+        - mg-desktop
+    This script requires PowerShell Community Extensions installed
+.EXAMPLE
+    C:\PS> .\build.ps1 -platform x64 -build_root 'D:\mg-trunk\MgDev' -java_home 'C:\Program Files\Java\jdk1.7.0_71' -output '.\Release64'
+    Build the full source (located at D:\mg-trunk\MgDev) for 64-bit using the JDK at (C:\Program Files\Java\jdk1.7.0_71). The build output will be at (.\Release64)
+.EXAMPLE
+    C:\PS> .\build.ps1 -platform x86 -build_root 'D:\mg-trunk\MgDev' -java_home 'C:\Program Files (x86)\Java\jdk1.7.0_71' -output '.\Release'
+    Build the full source (located at D:\mg-trunk\MgDev) for 32-bit using the JDK at (C:\Program Files (x86)\Java\jdk1.7.0_71). The build output will be at (.\Release64)
+.LINK
+    Project Home: http://mapguide.osgeo.org
+    PowerShell Community Extensions: https://pscx.codeplex.com/
+.NOTES
+    Author: Jackie Ng
+#>
+param (
+    [Parameter(HelpMessage = "The CPU platform to build for")]
+    [ValidateSet("x86", "x64")]
+    [Alias("p")]
+    [string]
+    $platform = "x86",
+    [Parameter(HelpMessage = "The build configuration to build for")]
+    [ValidateSet("Debug", "Release")]
+    [Alias("c")]
+    [string]
+    $config = "Release",
+    [Parameter(HelpMessage = "The action to perform")]
+    [ValidateSet("build", "install", "buildinstall", "clean", "installprepare")]
+    [Alias("a")]
+    [string]
+    $action = "buildinstall",
+    [Parameter(HelpMessage = "The components to build")]
+    [ValidateSet("all", "oem", "server", "web", "installer", "instantsetup", "desktop", "doc")]
+    [Alias("w")]
+    [string]
+    $component = "all",
+    [Parameter(HelpMessage = "The directory where compiled binaries will be copied to. If relative, the path will be relative to the build root")]
+    [Alias("o")]
+    [string]
+    $output = ".\Release",
+    [Parameter(HelpMessage = "The directory where the MapGuide source resides in")]
+    [string]
+    $build_root = ".\",
+    [Parameter(HelpMessage = "The directory where the MapGuide Installer source resides in")]
+    [string]
+    $install_root = "..\Installer",
+    [Parameter(HelpMessage = "The path to the Java SDK required for building the Java API bindings. If not specified, the value of the JAVA_HOME environment variable will be used")]
+    [Alias("j")]
+    [string]
+    $java_home = "",
+    [string]
+    $doxygen_path = "C:\Program Files\doxygen\bin",
+    [string]
+    $ant_path = "C:\apache-ant\bin",
+    [string]
+    $graphviz_path = "C:\Program Files (x86)\Graphviz2.38\bin",
+    [string]
+    $artifact_path = ".\artifacts",
+    [int]
+    $major = 3,
+    [int]
+    $minor = 0,
+    [int]
+    $build = 0,
+    [int]
+    $svnrev = 0,
+    [string]
+    $label = "Release"
+)
+
+Function EnvSetup([string]$plat, [string]$phpVer, [string]$apacheVer)
+{
+    Try
+    {
+        pushd .\Oem\LinuxApt
+        # If any of these files don't exist, we unpack the httpd source
+        $apacheParts = @(
+            "",
+            "include",
+            "include\httpd.h",
+            "include\http_config.h",
+            "include\ap_config.h",
+            "include\http_log.h",
+            "include\http_protocol.h",
+            "include\http_main.h",
+            "include\util_script.h",
+            "include\http_core.h",
+            "include\apr_strings.h",
+            "include\apr_tables.h"
+        )
+        # If any of these files don't exist, we unpack the php source
+        $phpParts = @(
+            "",
+            "ext",
+            "ext\standard",
+            "ext\standard\info.h",
+            "main",
+            "main\php.h",
+            "main\php_ini.h",
+            "main\config.w32.h",
+            "main\win95nt.h",
+            "TSRM",
+            "TSRM\readdir.h",
+            "Zend",
+            "Zend\zend.h",
+            "Zend\zend_exceptions.h",
+            "Zend\zend_API.h"
+        )
+        Write-Host "Checking if we need to unpack httpd source"
+        foreach ($part in $apacheParts) {
+            $path = [System.IO.Path]::Combine(".\httpd-$apacheVer", $part)
+            if (-Not(Test-Path $path)) {
+                if (-Not(Test-Path "httpd-$apacheVer.tar")) {
+                    & sz x "httpd-$apacheVer.tar.bz2"
+                }
+                & sz x -y "httpd-$apacheVer.tar"
+                break
+            }
+        }
+        Write-Host "Checking if we need to unpack php source"
+        foreach ($part in $phpParts) {
+            $path = [System.IO.Path]::Combine(".\php-$phpVer", $part)
+            if (-Not(Test-Path $path)) {
+                if (-Not(Test-Path "php-$phpVer.tar")) {
+                    & sz x "php-$phpVer.tar.bz2"
+                }
+                & sz x -y "php-$phpVer.tar"
+                break
+            }
+        }
+        Write-Host "Patching PHP headers for Windows"
+        Copy-Item -Force -Path "..\php\main\*.h" "php-$phpVer\main"
+        Copy-Item -Force -Path "..\php\TSRM\*.h" "php-$phpVer\TSRM"
+        Write-Host "Patching HTTPD headers for Windows"
+        Copy-Item -Force -Path "..\httpd\include\*.h" "httpd-$apacheVer\include"
+    }
+    Finally
+    {
+        popd
+    }
+}
+
+Function CheckStatus([string]$action, [boolean]$status)
+{
+    #ZeroFileTrap $action, ""
+    Write-Host "Status for action ($action) is: $status"
+    if (-Not $status) {
+        #ZeroFileTrap $action, ""
+        $msg = "Action ($action) failed"
+        throw $msg
+    }
+}
+
+Function MsBuildAction([string]$comp, [string]$conf, [string]$plat, [string]$action)
+{
+    $uplat = $plat
+    # x86 has to be coerced to Win32
+    if ($plat.Equals("x86")) {
+        $uplat = "Win32"
+    }
+
+    $solutions = @{
+        "oem" = ".\Oem\oem.sln";
+        "csmap" = ".\Oem\CsMap\VC110\OpenSource.sln";
+        "server" = ".\Server\Server.sln";
+        "web" = ".\Web\src\WebTier.sln";
+        "desktop" = ".\Desktop\MgDesktopApi.sln";
+        "desktop_viewer" = ".\Desktop\MgDesktopDotNet.sln";
+    };
+    #$msbParams = "/m /p:Configuration=$conf;Platform=$plat /t:$action"
+
+    Write-Host "Action ($action) on $comp ($conf|$plat)"
+    switch ($comp) {
+        "oem" {
+            #ZeroFileTrap "start_build" "oem"
+            msbuild /m /p:Configuration=$conf /p:Platform=$uplat /t:$action $solutions["oem"]
+            #ZeroFileTrap "build_completed" "oem"
+            CheckStatus "$action $comp" $? #$LASTEXITCODE
+            msbuild /m /p:Configuration=$conf /p:Platform=$uplat /t:$action $solutions["csmap"]
+            CheckStatus "$action $comp" $? #$LASTEXITCODE
+        }
+        "server" {
+            msbuild /m /p:Configuration=$conf /p:Platform=$uplat /t:$action $solutions["server"]
+            CheckStatus "$action $comp" $? #$LASTEXITCODE
+        }
+        "web" {
+            msbuild /m /p:Configuration=$conf /p:Platform=$uplat /t:$action $solutions["web"]
+            CheckStatus "$action $comp" $? #$LASTEXITCODE
+        }
+        "desktop" {
+            msbuild /m /p:Configuration=$conf /p:Platform=$uplat /t:$action $solutions["desktop"]
+            CheckStatus "$action $comp" $? #$LASTEXITCODE
+            msbuild /m /p:Configuration=$conf /p:Platform=$plat /t:$action $solutions["desktop_viewer"]
+            CheckStatus "$action $comp" $? #$LASTEXITCODE
+        }
+        "instantsetup" {
+            Try {
+                pushd $output
+                Write-Host "Entering directory: $output"
+                Write-Host "Making instant setup bundle"
+                & sz a "$artifact_path\MapGuideOpenSource-$major.$minor.$build.$svnrev-InstantSetup-$plat.exe" -mmt -mx5 -sfx 7z.sfx CS-Map Server Web Setup | Out-Null
+            } Finally {
+                popd
+            }
+        }
+        "installer" {
+            $installerName="MapGuideOpenSource-$major.$minor.$build.$svnrev-$label-$plat";
+            $installerCulture="en-US";
+            $installerTitle="MapGuide Open Source $major.$minor.$build ($label - $plat)";
+            $installerVersion="$major.$minor.$build";
+            $installerRegKey="Software\OSGeo\MapGuide\$major.$minor.$build.$svnrev";
+            $installerArcSde="no";
+            if (Test-Path ("$output\Server\FDO\ArcSdeProvider.dll")) {
+                $installerArcSde="yes";
+            }
+
+            Write-Host "============ Installer Summary ================="
+            Write-Host "Name:    $installerName"
+            Write-Host "Culture: $installerCulture"
+            Write-Host "Title:   $installerTitle"
+            Write-Host "Version: $installerVersion"
+            Write-Host "Reg Key: $installerRegKey"
+            Write-Host "ArcSDE?: $installerArcSde"
+            Write-Host "================================================"
+
+            Try {
+                pushd $installerSrcRoot
+                Write-Host "Entering $installerSrcRoot"
+                $wix_server="$installerSrcRoot\Libraries\MapGuide Server\FileIncludes"
+                $wix_web="$installerSrcRoot\Libraries\MapGuide Web Extensions\FileIncludes"
+                $wix_csmap="$installerSrcRoot\Libraries\CS Map\FileIncludes"
+
+                # These paraffin mappings are to be process flat (-norecurse)
+                $flatMappings = @(
+                    @{
+                        "desc" = "Server - binaries";
+                        "dirPart" = "Server\bin";
+                        "custom" = "SRVBINFILES";
+                        "dirref" = "SERVERROOTLOCATION";
+                        "output" = "$wix_server\incBinFiles.wxs";
+                    },
+                    @{
+                        "desc" = "Server - RepositoryAdmin";
+                        "dirPart" = "Server\RepositoryAdmin";
+                        "custom" = "SRVREPADMINFILES";
+                        "dirref" = "SERVERROOTLOCATION";
+                        "output" = "$wix_server\incRepositoryAdminFiles.wxs";
+                    },
+                    @{
+                        "desc" = "Server - resources";
+                        "dirPart" = "Server\Resources";
+                        "custom" = "SRVRESOURCESFILES";
+                        "dirref" = "SERVERROOTLOCATION";
+                        "output" = "$wix_server\incResourcesFiles.wxs";
+                    },
+                    @{
+                        "desc" = "Server - Schema";
+                        "dirPart" = "Server\Schema";
+                        "custom" = "SRVSCHEMAFILES";
+                        "dirref" = "SERVERROOTLOCATION";
+                        "output" = "$wix_server\incSchemaFiles.wxs";
+                    },
+                    @{
+                        "desc" = "Server - wms";
+                        "dirPart" = "Server\wms";
+                        "custom" = "SRVWMSFILES";
+                        "dirref" = "SERVERROOTLOCATION";
+                        "output" = "$wix_server\incWmsFiles.wxs";
+                    },
+                    @{
+                        "desc" = "Server - wfs";
+                        "dirPart" = "Server\wfs";
+                        "custom" = "SRVWFSFILES";
+                        "dirref" = "SERVERROOTLOCATION";
+                        "output" = "$wix_server\incWfsFiles.wxs";
+                    },
+                    @{
+                        "desc" = "Web - wwwroot";
+                        "dirPart" = "Web\www";
+                        "custom" = "WEBROOTFILES";
+                        "dirref" = "WEBEXTENSIONSLOCATION";
+                        "output" = "$wix_web\incWebRootFiles.wxs";
+                    }
+                )
+                # These paraffin mappings are to be processed recursively
+                $recurseMappings = @(
+                    @{
+                        "desc" = "CS-Map - dictionaries";
+                        "dirPart" = "CS-Map\Dictionaries";
+                        "custom" = "CSMAPDICTFILES";
+                        "dirref" = "CSMAPLOCATION";
+                        "output" = "$wix_csmap\incCSMapDictionaryFiles.wxs";
+                    },
+                    @{
+                        "desc" = "Web - Apache";
+                        "dirPart" = "Web\Apache24";
+                        "custom" = "APACHEFILES";
+                        "dirref" = "WEBEXTENSIONSLOCATION";
+                        "output" = "$wix_web\incApacheFiles.wxs";
+                    },
+                    @{
+                        "desc" = "Web - Php TS";
+                        "dirPart" = "Web\Php";
+                        "custom" = "PHPFILES";
+                        "dirref" = "WEBEXTENSIONSLOCATION";
+                        "output" = "$wix_web\incPhpFiles.wxs";
+                    },
+                    @{
+                        "desc" = "Web - Tomcat";
+                        "dirPart" = "Web\Tomcat";
+                        "custom" = "TOMCATFILES";
+                        "dirref" = "WEBEXTENSIONSLOCATION";
+                        "output" = "$wix_web\incTomcatFiles.wxs";
+                    },
+                    @{
+                        "desc" = "Web - Help";
+                        "dirPart" = "Web\www\help";
+                        "custom" = "HELPFILES";
+                        "dirref" = "WEBROOTLOCATION";
+                        "output" = "$wix_web\incHelpFiles.wxs";
+                    },
+                    @{
+                        "desc" = "Web - DevGuide Samples (PHP)";
+                        "dirPart" = "Web\www\phpsamples";
+                        "custom" = "PHPDEVGUIDEFILES";
+                        "dirref" = "WEBROOTLOCATION";
+                        "output" = "$wix_web\incPhpDevGuideFiles.wxs";
+                    },
+                    @{
+                        "desc" = "Web - DevGuide Samples (Java)";
+                        "dirPart" = "Web\www\javasamples";
+                        "custom" = "JAVADEVGUIDEFILES";
+                        "dirref" = "WEBROOTLOCATION";
+                        "output" = "$wix_web\incJavaDevGuideFiles.wxs";
+                    },
+                    @{
+                        "desc" = "Web - DevGuide Samples (.net)";
+                        "dirPart" = "Web\www\dotnetsamples";
+                        "custom" = "DOTNETDEVGUIDEFILES";
+                        "dirref" = "WEBROOTLOCATION";
+                        "output" = "$wix_web\incDotNetDevGuideFiles.wxs";
+                    },
+                    @{
+                        "desc" = "Web - Viewer Samples (PHP)";
+                        "dirPart" = "Web\www\phpviewersample";
+                        "custom" = "PHPVIEWERSAMPLEFILES";
+                        "dirref" = "WEBROOTLOCATION";
+                        "output" = "$wix_web\incPhpViewerSampleFiles.wxs";
+                    },
+                    @{
+                        "desc" = "Web - Viewer Samples (Java)";
+                        "dirPart" = "Web\www\javaviewersample";
+                        "custom" = "JAVAVIEWERSAMPLEFILES";
+                        "dirref" = "WEBROOTLOCATION";
+                        "output" = "$wix_web\incJavaViewerSampleFiles.wxs";
+                    },
+                    @{
+                        "desc" = "Web - Viewer Samples (.net)";
+                        "dirPart" = "Web\www\dotnetviewersample";
+                        "custom" = "DOTNETVIEWERSAMPLEFILES";
+                        "dirref" = "WEBROOTLOCATION";
+                        "output" = "$wix_web\incDotNetViewerSampleFiles.wxs";
+                    },
+                    @{
+                        "desc" = "Web - OpenLayers Samples";
+                        "dirPart" = "Web\www\ol2samples";
+                        "custom" = "OPENLAYERSSAMPLEFILES";
+                        "dirref" = "WEBROOTLOCATION";
+                        "output" = "$wix_web\incOpenLayersSampleFiles.wxs";
+                    },
+                    @{
+                        "desc" = "Web - mapagent";
+                        "dirPart" = "Web\www\mapagent";
+                        "custom" = "MAPAGENTFILES";
+                        "dirref" = "WEBROOTLOCATION";
+                        "output" = "$wix_web\incMapAgentFiles.wxs";
+                    },
+                    @{
+                        "desc" = "Web - mapviewernet";
+                        "dirPart" = "Web\www\mapviewernet";
+                        "custom" = "MAPVIEWERASPXFILES";
+                        "dirref" = "WEBROOTLOCATION";
+                        "output" = "$wix_web\incMapViewerAspxFiles.wxs";
+                    },
+                    @{
+                        "desc" = "Web - mapviewerphp";
+                        "dirPart" = "Web\www\mapviewerphp";
+                        "custom" = "MAPVIEWERPHPFILES";
+                        "dirref" = "WEBROOTLOCATION";
+                        "output" = "$wix_web\incMapViewerPhpFiles.wxs";
+                    },
+                    @{
+                        "desc" = "Web - mapviewerjava";
+                        "dirPart" = "Web\www\mapviewerjava";
+                        "custom" = "MAPVIEWERJSPFILES";
+                        "dirref" = "WEBROOTLOCATION";
+                        "output" = "$wix_web\incMapViewerJspFiles.wxs";
+                    },
+                    @{
+                        "desc" = "Web - fusion";
+                        "dirPart" = "Web\www\fusion";
+                        "custom" = "FUSIONFILES";
+                        "dirref" = "WEBROOTLOCATION";
+                        "output" = "$wix_web\incFusionFiles.wxs";
+                    },
+                    @{
+                        "desc" = "Web - viewerfiles";
+                        "dirPart" = "Web\www\viewerfiles";
+                        "custom" = "MAPVIEWERFILES";
+                        "dirref" = "WEBROOTLOCATION";
+                        "output" = "$wix_web\incMapViewerFiles.wxs";
+                    },
+                    @{
+                        "desc" = "Web - stdicons";
+                        "dirPart" = "Web\www\stdicons";
+                        "custom" = "MAPVIEWERSTDICONFILES";
+                        "dirref" = "WEBROOTLOCATION";
+                        "output" = "$wix_web\incMapViewerStdiconFiles.wxs";
+                    },
+                    @{
+                        "desc" = "Web - schemareport";
+                        "dirPart" = "Web\www\schemareport";
+                        "custom" = "MAPVIEWERSCHEMAREPORTFILES";
+                        "dirref" = "WEBROOTLOCATION";
+                        "output" = "$wix_web\incMapViewerSchemareportFiles.wxs";
+                    },
+                    @{
+                        "desc" = "Web - mapadmin";
+                        "dirPart" = "Web\www\mapadmin";
+                        "custom" = "MAPVIEWERMAPADMINFILES";
+                        "dirref" = "WEBROOTLOCATION";
+                        "output" = "$wix_web\incMapViewerMapAdminFiles.wxs";
+                    },
+                    @{
+                        "desc" = "Web - localized";
+                        "dirPart" = "Web\www\localized";
+                        "custom" = "MAPVIEWERLOCALIZEDFILES";
+                        "dirref" = "WEBROOTLOCATION";
+                        "output" = "$wix_web\incMapViewerLocalizedFiles.wxs";
+                    },
+                    @{
+                        "desc" = "Web - WEB-INF";
+                        "dirPart" = "Web\www\WEB-INF";
+                        "custom" = "WEBINFFILES";
+                        "dirref" = "WEBROOTLOCATION";
+                        "output" = "$wix_web\incWebInfFiles.wxs";
+                    }
+                )
+
+                if ($plat.Equals("x64")) {
+                    foreach ($map in $flatMappings) {
+                        Write-Host ("Generating: " + $map["desc"])
+                        if (-Not (Test-Path ("$output\" + $map["dirPart"]))) {
+                            throw ("No such directory " + ("$output\" + $map["dirPart"]))
+                        }
+                        .\Paraffin.exe -Win64 -guids -dir ("$output\" + $map["dirPart"]) -alias ('$(var.MgSource)\' + $map["dirPart"]) -custom $map["custom"] -dirref $map["dirref"] -norecurse ($map["output"])
+                    }
+                    foreach ($map in $recurseMappings) {
+                        Write-Host ("Generating: " + $map["desc"])
+                        if (-Not (Test-Path ("$output\" + $map["dirPart"]))) {
+                            throw ("No such directory " + ("$output\" + $map["dirPart"]))
+                        }
+                        .\Paraffin.exe -Win64 -guids -dir ("$output\" + $map["dirPart"]) -alias ('$(var.MgSource)\' + $map["dirPart"]) -custom $map["custom"] -dirref $map["dirref"] ($map["output"])
+                    }
+                } else {
+                    foreach ($map in $flatMappings) {
+                        Write-Host ("Generating: " + $map["desc"])
+                        if (-Not (Test-Path ("$output\" + $map["dirPart"]))) {
+                            throw ("No such directory " + ("$output\" + $map["dirPart"]))
+                        }
+                        .\Paraffin.exe -guids -dir ("$output\" + $map["dirPart"]) -alias ('$(var.MgSource)\' + $map["dirPart"]) -custom $map["custom"] -dirref $map["dirref"] -norecurse ($map["output"])
+                    }
+                    foreach ($map in $recurseMappings) {
+                        Write-Host ("Generating: " + $map["desc"])
+                        if (-Not (Test-Path ("$output\" + $map["dirPart"]))) {
+                            throw ("No such directory " + ("$output\" + $map["dirPart"]))
+                        }
+                        .\Paraffin.exe -guids -dir ("$output\" + $map["dirPart"]) -alias ('$(var.MgSource)\' + $map["dirPart"]) -custom $map["custom"] -dirref $map["dirref"] ($map["output"])
+                    }
+                }
+                msbuild /m /p:Configuration=$conf /p:Platform=$plat /t:$action "/p:OutputName=$installerName;MgSource=$output;MgCulture=$installerCulture;MgTitle=$installerTitle;MgVersion=$installerVersion;MgRegKey=$installerRegKey;MgPlatform=$plat;Have_ArcSde=$installerArcSde" InstallerWix.sln
+                CheckStatus "$action $comp" $? #$LASTEXITCODE
+                Copy-Item "Bootstrapper\vcredist_2012_$plat.exe" -Destination "Output\$installerCulture\vcredist_2012_$plat.exe" -Force
+            } Finally {
+                popd
+            }
+
+            Try {
+                pushd $installerSrcRoot\Bootstrapper
+                Write-Host "Entering $installerSrcRoot\Bootstrapper"
+                makensis /DMAXCOMPRESSION /DCPU=$plat /DINSTALLER_ROOT=$installerSrcRoot "/DNSISDIR=$installerSrcRoot\Support\NSIS" /DOUTNAME=$installerName /DCULTURE=$installerCulture "/DMG_VERSION=$major.$minor.$build.$svnrev" Setup.nsi
+            } Finally {
+                popd
+            }
+
+            Try {
+                pushd $installerSrcRoot\Output\en-US
+                Move-Item -path "$installerName.exe" -destination "$artifact_path" -Force
+            } Finally {
+                popd
+            }
+        }
+        "doc" {
+            Try {
+                pushd "Doc"
+                MakeDirIfNotExists "MgOpensource_WebAPIReference"
+                Copy-Item -Path "css\doxygen.css" -Destination "MgOpensource_WebAPIReference" -Force
+                MakeDirIfNotExists "MgOpensource_WebAPIReference\xml_schemas"
+                Copy-Item -Path "xml_schemas\*" -Destination "MgOpensource_WebAPIReference\xml_schemas" -Force -Recurse
+                doxygen MgOpenSource_Doxyfile | Tee-Object MGOpenSource_run_log.txt
+                perl -w PostProcessor/post_process.MgOpenSource.pl
+            } Finally {
+                popd
+            }
+
+            Try {
+                pushd "Doc\devguide"
+                Invoke-BatchFile make.bat html
+            } Finally {
+                popd
+            }
+
+            Try {
+                pushd "UnitTest\TestData\Samples\Sheboygan"
+                if (Test-Path "Sheboygan.mgp") {
+                    Remove-Item -Force "Sheboygan.mgp"
+                }
+                Copy-Item -Path "..\..\FeatureService\SDF\Sheboygan_BuildingOutlines.sdf" -Destination "Library\Samples\Sheboygan\Data\BuildingOutlines.FeatureSource_DATA_BuildingOutlines.sdf" -Force
+                Copy-Item -Path "..\..\FeatureService\SDF\Sheboygan_CityLimits.sdf" -Destination "Library\Samples\Sheboygan\Data\CityLimits.FeatureSource_DATA_CityLimits.sdf" -Force
+                Copy-Item -Path "..\..\FeatureService\SDF\Sheboygan_Parcels.sdf" -Destination "Library\Samples\Sheboygan\Data\Parcels.FeatureSource_DATA_CityLimits.sdf" -Force
+                Copy-Item -Path "..\..\FeatureService\SDF\Sheboygan_VotingDistricts.sdf" -Destination "Library\Samples\Sheboygan\Data\VotingDistricts.FeatureSource_DATA_CityLimits.sdf" -Force
+                Copy-Item -Path "..\..\MappingService\UT_HydrographicPolygons.sdf" -Destination "Library\Samples\Sheboygan\Data\HydrographicPolygons.FeatureSource_DATA_CityLimits.sdf" -Force
+                Copy-Item -Path "..\..\MappingService\UT_Rail.sdf" -Destination "Library\Samples\Sheboygan\Data\Rail.FeatureSource_DATA_CityLimits.sdf" -Force
+                Copy-Item -Path "..\..\TileService\UT_RoadCenterLines.sdf" -Destination "Library\Samples\Sheboygan\Data\RoadCenterLines.FeatureSource_DATA_CityLimits.sdf" -Force
+                & sz a -tzip "$artifact_path\Sheboygan.mgp" Library/ MgResourcePackageManifest.xml
+            } Finally {
+                popd
+            }
+        }
+        "all" {
+            foreach ($sln in $solutions.GetEnumerator())
+            {
+                if ($sln.Key -eq "desktop_viewer") {
+                    msbuild /m /p:Configuration=$conf /p:Platform=$plat /t:$action $sln.Value
+                } else {
+                    msbuild /m /p:Configuration=$conf /p:Platform=$uplat /t:$action $sln.Value
+                }
+                CheckStatus ("$action " + $sln.Key) $? #$LASTEXITCODE
+                #$status = Invoke-MsBuild -Path $sln.Value -ShowBuildWindow -MsBuildParameters $msbParams
+                #CheckStatus ("Building " + $sln.Key) $status
+            }
+        }
+    }
+}
+
+Function BuildAction([string]$comp, [string]$conf, [string]$plat)
+{
+    MsBuildAction $comp $conf $plat "Build"
+}
+
+Function CleanAction([string]$comp, [string]$conf, [string]$plat)
+{
+    MsBuildAction $comp $conf $plat "Clean"
+}
+
+Function MakeDirIfNotExists([string]$dir) {
+    if (-Not(Test-Path $dir)) {
+        New-Item -ItemType directory -Path $dir
+    }
+}
+
+Function InstallAction([string]$comp, [string]$conf, [string]$plat, [string]$outDir)
+{
+    Write-Host "Installing $comp ($conf|$plat) to $outDir"
+    MakeDirIfNotExists $outDir
+
+    $typebuild = $conf
+    if ($plat.Equals("x64")) {
+        $typebuild += "64"
+    }
+
+    $exclude = @(".svn\*", "_svn\*", "Logs", "Packages", "Repositories", "Temp", "*.c", "OSTN02.txt", "OSTN97.txt", "cs-map.*", "*.par", "*.mrt", "*.asc", "Compiler.mak", "Compiler.nmk", "UnitTestResults.xml")
+    if ($conf.ToLower().Equals("release")) {
+        Write-Host "Excluding extra file patterns for release"
+        $exclude += "*.pdb"
+        $exclude += "*.exp"
+        $exclude += "*.lib"
+    }
+    switch ($comp) {
+        "server" {
+            $mappings = @{
+                "Server\bin\$typebuild\*" = "Server";
+                "Server\RepositoryAdmin\*" = "Server\RepositoryAdmin";
+                "Oem\CsMap\Dictionaries\*" = "CS-Map\Dictionaries";
+            };
+            if ($plat.Equals("x64")) {
+                $mappings.Add("Oem\dbxml\bin64\$conf\*.exe", "Server\bin");
+            } else {
+                $mappings.Add("Oem\dbxml\bin\$conf\*.exe", "Server\bin");
+            }
+            foreach ($map in $mappings.GetEnumerator()) {
+                $key = $map.Key
+                $value = $map.Value
+                if (-Not ($map.Value -is [array])) {
+                    $value = @($map.Value)
+                }
+                foreach ($val in $value) {
+                    $outPath = [System.IO.Path]::Combine($outDir, $val)
+                    MakeDirIfNotExists $outPath
+                    Copy-Item ($key) -Destination "$outPath" -Recurse -Force -Exclude $exclude
+                }
+            }
+
+            $outPath = [System.IO.Path]::Combine($outDir, "Server\bin")
+            $srcPath = [System.IO.Path]::Combine($outDir, "Server", "*.*")
+            Move-Item -Path "$srcPath" -Destination "$outPath" -Force
+            # Remove old archive if it exists
+            $zipPath = "$artifact_path\MapGuideOpenSource-$major.$minor.$build.$svnrev-TestSuite-$plat.zip"
+            If (Test-Path $zipPath) {
+                Remove-Item $zipPath -Force
+            }
+            Try {
+                pushd $outDir
+                & sz a -tzip -mx9 $zipPath Test
+            } Finally {
+                popd
+            }
+        }
+        "web" {
+            $mappings = @{
+                "Web\src\webconfig.ini" = "Web\www";
+                "Common\MapGuideCommon\Resources\*" = "Web\www\mapagent\Resources";
+                "Web\src\localized\*" = "Web\www\localized";
+                "Web\src\mapadmin\*" = "Web\www\mapadmin";
+                "Web\src\stdicons\*" = "Web\www\stdicons";
+                "Web\src\viewerfiles\*" = "Web\www\viewerfiles";
+                "Web\src\schemareport\*" = "Web\www\schemareport";
+                "Web\src\mapviewerphp\*" = "Web\www\mapviewerphp";
+                "Web\src\mapviewernet\*" = "Web\www\mapviewernet";
+                "Web\src\mapagent\*" = "Web\www\mapagent";
+                "Web\bin\$typebuild\OSGeo.MapGuide.*" = @(
+                    "Web\www\mapviewernet\bin",
+                    "Web\www\dotnetsamples\bin",
+                    "Web\www\dotnetviewersample\bin"
+                );
+                "Web\bin\$typebuild\Mg*.dll" = @(
+                    "Web\www\mapviewernet\bin",
+                    "Web\www\mapagent",
+                    "Web\Php",
+                    "Web\Php\ext",
+                    "Web\Tomcat\bin",
+                    "Web\www\dotnetsamples\bin",
+                    "Web\www\dotnetviewersample\bin"
+                );
+                "Web\bin\$typebuild\ACE.dll" = @(
+                    "Web\www\mapviewernet\bin",
+                    "Web\www\mapagent",
+                    "Web\Php",
+                    "Web\Tomcat\bin",
+                    "Web\www\dotnetsamples\bin",
+                    "Web\www\dotnetviewersample\bin"
+                );
+                "Web\bin\$typebuild\GEOS.dll" = @(
+                    "Web\www\mapviewernet\bin",
+                    "Web\www\mapagent",
+                    "Web\Php",
+                    "Web\Php\ext",
+                    "Web\Tomcat\bin",
+                    "Web\www\dotnetsamples\bin",
+                    "Web\www\dotnetviewersample\bin"
+                );
+                "Web\bin\$typebuild\lib_json.dll" = @(
+                    "Web\www\mapviewernet\bin",
+                    "Web\www\mapagent",
+                    "Web\Php",
+                    "Web\Php\ext",
+                    "Web\Tomcat\bin",
+                    "Web\www\dotnetsamples\bin",
+                    "Web\www\dotnetviewersample\bin"
+                );
+                "Web\bin\$typebuild\MapGuideJavaApi*" = "Web\Tomcat\bin";
+                "Web\bin\$typebuild\*UnmanagedApi.dll" = "Web\www\mapviewernet\bin";
+                "Web\bin\$typebuild\xerces*.dll" = @(
+                    "Web\www\mapviewernet\bin",
+                    "Web\www\mapagent",
+                    "Web\Php",
+                    "Web\Php\ext",
+                    "Web\www\dotnetsamples\bin",
+                    "Web\www\dotnetviewersample\bin"
+                );
+                "Oem\SQLite\bin\$typebuild\php_*.dll" = "Web\Php\ext";
+                "Web\bin\$typebuild\php_*.dll" = "Web\Php\ext";
+                "Web\src\mapviewerjava\*" = "Web\www\mapviewerjava";
+                "Web\src\WEB-INF\*" = "Web\www\WEB-INF";
+                "UnitTest\*" = "Test\UnitTest";
+            };
+            if ($plat.Equals("x64")) {
+                $mappings.Add("Web\src\mapagent64\isapi_MapAgent*", "Web\www\mapagent");
+                $mappings.Add("Web\src\mapagent64\mapagent*", "Web\www\mapagent");
+                $mappings.Add("Web\src\mapagent64\mod_mgmapagent*", "Web\Apache24\modules");
+            } else {
+                $mappings.Add("Web\src\mapagent\isapi_MapAgent*", "Web\www\mapagent");
+                $mappings.Add("Web\src\mapagent\mapagent*", "Web\www\mapagent");
+                $mappings.Add("Web\src\mapagent\mod_mgmapagent*", "Web\Apache24\modules");
+            }
+            foreach ($map in $mappings.GetEnumerator()) {
+                $key = $map.Key
+                $value = $map.Value
+                if (-Not ($map.Value -is [array])) {
+                    $value = @($map.Value)
+                }
+                foreach ($val in $value) {
+                    $outPath = [System.IO.Path]::Combine($outDir, $val)
+                    MakeDirIfNotExists $outPath
+                    Copy-Item ($key) -Destination "$outPath" -Recurse -Force -Exclude $exclude
+                }
+            }
+            # Fusion
+            MakeDirIfNotExists "$outDir\Web\www\fusion"
+            Try {
+                pushd "Oem\fusion"
+                ant clean -f build.xml
+                ant docs -f build.xml
+                ant deploy -f build.xml "-Ddeploy.home=$outDir\Web\www\fusion"
+                ant selfbuild -f build.xml "-Dselfbuild.home=$outDir\fusion-selfbuild"
+            } Finally {
+                popd
+            }
+            # Fusion templates
+            Copy-Item "Oem\fusionMG\*" -Destination "$outDir\Web\www\fusion" -Recurse -Force -Exclude $exclude
+
+            # Copy remaining unit test files
+            $testFiles = @{
+                "test_readme.txt" = "Test";
+                "run_tests.bat" = "Test";
+                "run_tests.sh" = "Test";
+            };
+
+            foreach ($testMap in $testFiles.GetEnumerator()) {
+                $key = $testMap.Key
+                $value = $testMap.Value
+                $outPath = [System.IO.Path]::Combine($outDir, $value)
+                Copy-Item ($key) -Destination "$outPath" -Force
+            }
+
+            # Remove old archive if it exists
+            $zipPath = "$artifact_path\MapGuideOpenSource-$major.$minor.$build.$svnrev-TestSuite-$plat.zip"
+            If (Test-Path $zipPath) {
+                Remove-Item $zipPath -Force
+            }
+            Try {
+                pushd $outDir
+                & sz a -tzip -mx9 $zipPath Test
+            } Finally {
+                popd
+            }
+        }
+        "doc" {
+            $mappings = @{
+                "Doc\MgOpensource_WebAPIReference\*" = "Web\www\help\webapi";
+                "Doc\devguide\build\html\*" = "Web\www\help\devguide";
+                "Doc\samples\*" = "Web\www";
+                "Doc\viewerapi\*" = "Web\www\help\viewerapi";
+                "UnitTest\TestData\Samples\Sheboygan\Sheboygan.mgp" = "";
+            };
+            foreach ($map in $mappings.GetEnumerator()) {
+                $key = $map.Key
+                $value = $map.Value
+                if (-Not ($map.Value -is [array])) {
+                    $value = @($map.Value)
+                }
+                foreach ($val in $value) {
+                    $outPath = [System.IO.Path]::Combine($outDir, $val)
+                    MakeDirIfNotExists $outPath
+                    Copy-Item ($key) -Destination "$outPath" -Recurse -Force -Exclude $exclude
+                }
+            }
+        }
+        "desktop" {
+            $exclude += "Backup"
+            $exclude += "MgMapGuideCommon*"
+            $exclude += "OSGeo.MapGuide.Commmon*"
+            $mappings = @{
+                "Desktop\bin\$typebuild\*" = "mg-desktop\Desktop";
+                "Desktop\Samples\*" = "mg-desktop\DesktopSamples";
+            };
+            foreach ($map in $mappings.GetEnumerator()) {
+                $key = $map.Key
+                $value = $map.Value
+                if (-Not ($map.Value -is [array])) {
+                    $value = @($map.Value)
+                }
+                foreach ($val in $value) {
+                    $outPath = [System.IO.Path]::Combine($outDir, $val)
+                    MakeDirIfNotExists $outPath
+                    Copy-Item ($key) -Destination "$outPath" -Recurse -Force -Exclude $exclude
+                }
+            }
+            Try {
+                $mgdRoot = [System.IO.Path]::Combine($outDir, "mg-desktop")
+                pushd $mgdRoot
+                Write-Host "Make mg-desktop zip distribution"
+                # Remove old archive if it exists
+                $zipPath = "$artifact_path\mg-desktop-$major.$minor.$build.$svnrev-net40-vc11-$plat.zip"
+                If (Test-Path $zipPath) {
+                    Remove-Item $zipPath -Force
+                }
+                & sz a -tzip -mx9 $zipPath Desktop DesktopSamples
+            } Finally {
+                popd
+            }
+        }
+    }
+}
+
+Function PrepareInstallerStagingArea([string]$output, [string]$conf, [string]$plat, [string]$installerSupport, [string]$buildRoot, [string]$phpDist, [string]$apacheDist, [string]$tomcatDist)
+{
+    $uplat = $plat
+    # x86 has to be coerced to Win32
+    if ($plat.Equals("x86")) {
+        $uplat = "Win32"
+    }
+    $typebuild = $conf
+    if ($plat.Equals("x64")) {
+        $typebuild += "64"
+    }
+
+    Write-Host "Preparing staging area at: $output"
+
+    # Put our Apache/Tomcat/PHP binaries into the output
+    MakeDirIfNotExists $output
+    MakeDirIfNotExists "$output\Web\Php"
+    MakeDirIfNotExists "$output\Web\Tomcat"
+    MakeDirIfNotExists "$output\Web\Apache24"
+    & sz x $apacheDist -y "-o$output\Web"
+    & sz x $phpDist -y "-o$output\Web\Php"
+    Copy-Item "$installerSupport\mod_jk.so" -Destination "$output\Web\Apache24\modules" -Force
+    Try {
+        & sz x "$tomcatDist" -y "-o$output\Web"
+        pushd $output\Web
+        $tomcatName = [System.IO.Path]::GetFileNameWithoutExtension($tomcatDist);
+        if (Test-Path $tomcatName) {
+            & sz x $tomcatName -y
+            Remove-Item $tomcatName -Force
+            $dirToRename = Get-ChildItem 'apache-tomcat-*' | ForEach-Object {$_.FullName} | Select-Object -First 1
+            $dirToRename = [System.IO.Path]::GetFullPath($dirToRename)
+            Copy-Item -Path "$dirToRename\*" -Destination "Tomcat" -Force -Recurse
+            Remove-Item $dirToRename -Force -Recurse
+        } else {
+            throw "Expected $tomcatName to exist"
+        }
+    } Finally {
+        popd
+    }
+    Copy-Item "$installerSupport\configs\Tomcat\*" -Destination "$output\Web\Tomcat" -Recurse -Force
+    Copy-Item "$installerSupport\configs\Php\*" -Destination "$output\Web\Php" -Recurse -Force
+    Copy-Item "$installerSupport\configs\Apache2\*" -Destination "$output\Web\Apache24" -Recurse -Force
+    Copy-Item "$installerSupport\configs\FDO\providers.xml" -Destination "$output\Server\FDO" -Force
+    Copy-Item "$output\Web\Php\libpq.dll" -Destination "$output\Server\FDO" -Force
+    Copy-Item "$output\Web\Php\libeay32.dll" -Destination "$output\Server\FDO" -Force
+    Copy-Item "$output\Web\Php\ssleay32.dll" -Destination "$output\Server\FDO" -Force
+    msbuild /m /p:Configuration=$conf /p:Platform=$uplat "$installerSrcRoot\InstallerPreReq.sln"
+    Copy-Item "$installerSrcRoot\FdoRegUtil\$typebuild\FdoRegUtil.exe" -Destination "$output\Server\FDO" -Force
+}
+
+Function StampVersion([string]$buildRoot)
+{
+    Write-Host "Stamping version $major.$minor.$build.$svnrev to applicable files"
+    set-alias st "$buildRoot\BuildTools\WebTools\SetAssemblyVersion\SetAssemblyVersion\bin\Release\SetAssemblyVersion.exe"
+    if (-Not (Get-Command doxygen -errorAction SilentlyContinue)) {
+        throw "SetAssemblyVersion.exe not found"
+    }
+
+    Try {
+        pushd $buildRoot
+        cscript updateversion.vbs "/major:$major" "/minor:$minor" "/point:$build" "/build:$svnrev"
+    } Finally {
+        popd
+    }
+
+    $paths = @(
+        "$buildRoot\Web\src\DotNetApi",
+        "$buildRoot\Web\src\DotNetApi\Foundation",
+        "$buildRoot\Web\src\DotNetApi\Geometry",
+        "$buildRoot\Web\src\DotNetApi\MapGuideCommon",
+        "$buildRoot\Web\src\DotNetApi\PlatformBase",
+        "$buildRoot\Web\src\DotNetApi\Web",
+        "$buildRoot\Desktop\DesktopUnmanagedApi\DotNet\Partials",
+        "$buildRoot\Desktop\MgAppLayout\Properties",
+        "$buildRoot\Desktop\MapViewer\Properties",
+        "$buildRoot\Desktop\MapViewer.Desktop\Properties"
+    )
+    foreach ($path in $paths) {
+        Try {
+            pushd $path
+            st "-set:$major.$minor.$build.$svnrev" AssemblyInfo.cs
+        } Finally {
+            popd
+        }
+    }
+}
+
+<#
+Function ZeroFileTrap([string]$action, [string]$comp, [string]$buildDir = "D:\mg-trunk\MgDev") {
+    $filePath = [System.IO.Path]::GetFullPath((Join-Path $buildDir "\0"));
+    if (Test-Path $filePath) {
+        Write-Host "Action ($action) for ($comp) caused a 0 file to be created"
+        $x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
+    }
+}
+#>
+
+Try
+{
+    Import-Module Pscx
+    #Import-Module -Name ".\Invoke-MsBuild.psm1"
+
+    $haveMsBuild = (Get-Command msbuild -errorAction SilentlyContinue)
+    $haveNmake   = (Get-Command nmake -errorAction SilentlyContinue)
+
+    If (-Not $haveMsBuild -or -Not $haveNmake) {
+        Write-Host "Could not find msbuild or nmake. Running VS command prompt"
+        $vscmd = "$env:VS110COMNTOOLS" + "VsDevCmd.bat"
+        Write-Host "Running: $vscmd"
+        Invoke-BatchFile $vscmd
+        if (-Not $?) {
+            throw "Failure invoking VsDevCmd.bat"
+        }
+    } Else {
+        Write-Host "msbuild and nmake exist. Proceeding with build"
+    }
+    $cwd = (Get-Item -Path ".\" -Verbose).FullName
+
+    MakeDirIfNotExists $artifact_path
+    $artifact_path = (Get-Item -Path $artifact_path -Verbose).FullName
+    $log_path = [System.IO.Path]::GetFullPath((Join-Path $artifact_path "\logs"));
+    MakeDirIfNotExists $log_path
+
+    StampVersion $build_root
+    #ZeroFileTrap "stamp_version", $component
+
+    $cwd = (Get-Item -Path "$build_root" -Verbose).FullName
+    pushd $cwd
+    $phpVersion = "5.5.17"
+    $apacheVersion = "2.4.10"
+    $tomcatVersion = "7.0.56"
+    if (-Not [System.IO.Path]::IsPathRooted($install_root)) {
+        $installerSrcRoot = [System.IO.Path]::GetFullPath((Join-Path $cwd $install_root));
+    } else {
+        $installerSrcRoot = $install_root
+    }
+    $installerSupport = [System.IO.Path]::Combine($installerSrcRoot, "Support\Web\$platform")
+    $phpDist = [System.IO.Path]::Combine($installerSupport, "php-$phpVersion-$platform-VC11.zip")
+    $apacheDist = [System.IO.Path]::Combine($installerSupport, "httpd-$apacheVersion-$platform-VC11.zip")
+    $tomcatDist = [System.IO.Path]::Combine($cwd, "Oem\LinuxApt", "apache-tomcat-$tomcatVersion.tar.gz")
+
+    # Alias 7-zip for easy invocation
+    if (!$env:PATH.Contains("$cwd\BuildTools\WebTools\7-Zip")) {
+        $env:PATH += ";$cwd\BuildTools\WebTools\7-Zip"
+        Write-Host "Appended 7zip to PATH"
+    } else {
+        Write-Host "7zip already in PATH"
+    }
+
+    set-alias sz "7z.exe"  
+    if (-Not (Get-Command sz -errorAction SilentlyContinue)) {
+        throw "7-Zip command not found"
+    }
+
+    # Check doxygen
+    Write-Host "Checking for doxygen"
+    if (-Not (Get-Command doxygen -errorAction SilentlyContinue)) {
+        # Retry
+        set-alias doxygen "$doxygen_path\doxygen.exe"
+        if (-Not (Get-Command doxygen -errorAction SilentlyContinue)) {
+            throw "Doxygen not found"
+        }
+    }
+
+    # Check graphviz
+    Write-Host "Checking for graphviz"
+    if (-Not (Get-Command dot -errorAction SilentlyContinue)) {
+        throw "dot not found. Ensure graphviz bin directory is in your PATH environment variable"
+    }
+
+    # Check perl
+    Write-Host "Checking for perl"
+    if (-Not (Get-Command perl -errorAction SilentlyContinue)) {
+        throw "perl not found. Ensure perl bin directory is in your PATH environment variable"
+    }
+
+    # Check sphinx-build
+    Write-Host "Checking for sphinx-build"
+    if (-Not (Get-Command sphinx-build -errorAction SilentlyContinue)) {
+        throw "sphinx-build not found. Ensure Python is installed and you have this sphinx package installed (http://sphinx.pocoo.org)"
+    }
+
+    # Check and unpack the PHP and HTTPD sources
+    EnvSetup $platform $phpVersion $apacheVersion
+    #ZeroFileTrap "env_setup" $component
+    $env:PHP_SRC = "$cwd\Oem\LinuxApt\php-$phpVersion"
+    $env:HTTPD_SRC = "$cwd\Oem\LinuxApt\httpd-$apacheVersion"
+    if ($platform.Equals("x64")) {
+        if ($java_home.Length > 0) {
+            $env:JAVA_HOME = $java_home
+            #ZeroFileTrap "set_java_home_param", $component
+        } else {
+            $env:JAVA_HOME = "C:\Program Files\Java\jdk1.7.0_71"
+            #ZeroFileTrap "set_java_home_default", $component
+        }
+        #ZeroFileTrap "set_java_home", $component
+        $env:PHP_LIB = "$cwd\Oem\php\x64\Release_TS"
+        #ZeroFileTrap "set_php_lib", $component
+        $env:HTTPD_LIB = "$cwd\Oem\httpd\lib64"
+        #ZeroFileTrap "set_httpd_lib", $component
+    } else {
+        if ($java_home.Length > 0) {
+            $env:JAVA_HOME = $java_home
+        } else {
+            $env:JAVA_HOME = "C:\Program Files (x86)\Java\jdk1.7.0_71"
+        }
+        $env:PHP_LIB = "$cwd\Oem\php\Release_TS"
+        $env:HTTPD_LIB = "$cwd\Oem\httpd\lib"
+    }
+    #ZeroFileTrap "set_env_vars", $component
+    # JAVA_HOME must check out
+    Write-Host "Checking for JAVA_HOME"
+    if (-Not (Test-Path $env:JAVA_HOME)) {
+        throw "JAVA_HOME ($env:JAVA_HOME) path does not exist"
+    }
+    #ZeroFileTrap "check_java", $component
+    # Check ant
+    Write-Host "Checking for ant"
+    if (-Not (Get-Command ant -errorAction SilentlyContinue)) {
+        # Retry
+        set-alias ant "$ant_path\ant.bat"
+        if (-Not (Get-Command ant -errorAction SilentlyContinue)) {
+            throw "ant not found. Please check that ant is in your PATH environment variable or that you passed in a valid path for -ant_path"
+        }
+    }
+    #ZeroFileTrap "check_ant", $component
+    # Check makensis
+    Write-Host "Checking for makensis"
+    if (-Not (Get-Command makensis -errorAction SilentlyContinue)) {
+        # Retry
+        set-alias makensis "$installerSrcRoot\Support\NSIS\makensis.exe"
+        if (-Not (Get-Command ant -errorAction SilentlyContinue)) {
+            throw "makensis not found. Please check that you provided a valid path for -install_root"
+        }
+    }
+    #ZeroFileTrap "check_nsis", $component
+    # Normalize the output path
+    if (-Not [System.IO.Path]::IsPathRooted($output)) {
+        $output = [System.IO.Path]::GetFullPath((Join-Path $cwd $output));
+    }
+
+    #ZeroFileTrap "before_build", $component
+
+    Write-Host "========= Action Summary ============"
+    Write-Host "Platform: $platform"
+    Write-Host "Configuration: $config"
+    Write-Host "Action: $action"
+    Write-Host "Component: $component"
+    Write-Host "Output Dir: $output"
+    Write-Host "Build Root: $build_root"
+    Write-Host "Artifact Root: $artifact_path"
+    Write-Host "Version (major): $major"
+    Write-Host "Version (minor): $minor"
+    Write-Host "Version (build): $build"
+    Write-Host "=== Environment Variable Summary ===="
+    Write-Host "PHP_SRC: $env:PHP_SRC"
+    Write-Host "PHP_LIB: $env:PHP_LIB"
+    Write-Host "HTTPD_SRC: $env:HTTPD_SRC"
+    Write-Host "HTTPD_LIB: $env:HTTPD_LIB"
+    Write-Host "JAVA_HOME: $env:JAVA_HOME"
+    Write-Host "====================================="
+
+    switch($action) {
+        "clean" {
+            CleanAction $component $config $platform
+        }
+        "build" {
+            BuildAction $component $config $platform
+        }
+        "buildinstall" {
+            if ($component.Equals("all")) {
+                BuildAction "oem" $config $platform
+                #ZeroFileTrap "build" "oem"
+                InstallAction "oem" $config $platform $output
+                #ZeroFileTrap "install" "oem"
+
+                BuildAction "server" $config $platform
+                #ZeroFileTrap "build" "server"
+                InstallAction "server" $config $platform $output
+                #ZeroFileTrap "install" "server"
+
+                BuildAction "web" $config $platform
+                #ZeroFileTrap "build" "web"
+                InstallAction "web" $config $platform $output
+                #ZeroFileTrap "install" "web"
+
+                BuildAction "doc" $config $platform
+                #ZeroFileTrap "build" "doc"
+                InstallAction "doc" $config $platform $output
+                #ZeroFileTrap "install" "doc"
+
+                PrepareInstallerStagingArea $output $config $platform $installerSupport $cwd $phpDist $apacheDist $tomcatDist
+                #ZeroFileTrap "prepare" "installer"
+                BuildAction "instantsetup" $config $platform
+                #ZeroFileTrap "build" "instantsetup"
+                BuildAction "installer" $config $platform
+                #ZeroFileTrap "build" "installer"
+
+                BuildAction "desktop" $config $platform
+                #ZeroFileTrap "build" "desktop"
+                InstallAction "desktop" $config $platform $output
+                #ZeroFileTrap "installer" "desktop"
+            } else {
+                BuildAction $component $config $platform
+                InstallAction $component $config $platform $output
+            }
+        }
+        "install" {
+            if ($component.Equals("all")) {
+                InstallAction "server" $config $platform $output
+                InstallAction "web" $config $platform $output
+                InstallAction "doc" $config $platform $output
+                PrepareInstallerStagingArea $output $config $platform $installerSupport $cwd $phpDist $apacheDist $tomcatDist
+                InstallAction "desktop" $config $platform $output
+            } else {
+                InstallAction $component $config $platform $output
+            }
+        }
+        "installprepare" {
+            PrepareInstallerStagingArea $output $config $platform $installerSupport $cwd $phpDist $apacheDist $tomcatDist
+        }
+    }
+}
+Finally
+{
+    popd
+}
\ No newline at end of file

Modified: branches/2.6/vagrant/scripts/build.sh
===================================================================
--- branches/2.6/vagrant/scripts/build.sh	2015-07-27 12:14:02 UTC (rev 8718)
+++ branches/2.6/vagrant/scripts/build.sh	2015-07-27 12:26:06 UTC (rev 8719)
@@ -2,7 +2,7 @@
 
 # Global vars for this script. Modify as necessary
 APIVERSION=2.6
-BUILDNUM=${APIVERSION}.0
+BUILDNUM=${APIVERSION}.1
 BUILDROOT=`pwd`
 MGCPUPLATFORM=i386
 MGDEBUG=0
@@ -17,7 +17,7 @@
 SVNROOT=/home/vagrant
 #SVNROOT="svn://svn.bld.mgproto.net"
 #SVNROOT="http://svn.osgeo.org"
-SVNRELPATH=/mapguide/branches/2.6/MgDev
+SVNRELPATH=/mapguide/branches/3.0/MgDev
 MY_MAKE_OPTS="-j 2"
 UBUNTU=0
 PRESERVE_BUILD_ROOT=1
@@ -196,6 +196,18 @@
 end_time=`date +%s`
 
 echo "Preparing binaries for packaging"
+# Strip the heavy CS-Map dictionary data files. The geoid stuff is not used and the NSRS ones can be packaged separately
+pushd ${INSTALLROOT}/share/gis/coordsys
+rm -rf WW15MGH.GRD
+popd
+pushd ${INSTALLROOT}/share/gis/coordsys/Usa
+rm -rf Geoid03
+rm -rf Geoid96
+rm -rf Geoid99
+rm -rf NSRS2007
+rm -rf NSRS2011
+popd
+
 # Prepare binaries for packaging by removing unnecessary
 # .la and .a files and stripping unneeded symbols from the binaries
 pushd ${INSTALLROOT}
@@ -226,7 +238,7 @@
         mkdir -p bin
     fi
 
-    tar -zcf bin/mapguideopensource-${BUILDNUM}.${REVISION}.${MGCPUPLATFORM}.tar.gz ${INSTALLROOT} ${LOCKFILEDIR}
+    tar -Jcf bin/mapguideopensource-${BUILDNUM}.${REVISION}.${MGCPUPLATFORM}.tar.xz ${INSTALLROOT} ${LOCKFILEDIR}
 fi
 echo "Build complete!"
 echo Main build execution: `expr $end_time - $start_time` s

Added: branches/2.6/vagrant/scripts/build_fdo.ps1
===================================================================
--- branches/2.6/vagrant/scripts/build_fdo.ps1	                        (rev 0)
+++ branches/2.6/vagrant/scripts/build_fdo.ps1	2015-07-27 12:26:06 UTC (rev 8719)
@@ -0,0 +1,132 @@
+<#
+.SYNOPSIS
+    Builds the FDO codebase
+.DESCRIPTION
+    This PowerShell script will build the entire FDO codebase, which consists of
+        - Oem components
+        - Server tier
+        - Web tier
+        - Documentation
+        - Windows Installer
+        - mg-desktop
+    This script requires PowerShell Community Extensions installed
+.EXAMPLE
+    C:\PS> .\build.ps1 -platform x64 -build_root 'D:\fdo-trunk' -output '.\Release64'
+    Build the full source (located at D:\fdo-trunk) for 64-bit. The build output will be at (.\Release64)
+.EXAMPLE
+    C:\PS> .\build.ps1 -platform x86 -build_root 'D:\fdo-trunk' -output '.\Release'
+    Build the full source (located at D:\fdo-trunk) for 32-bit. The build output will be at (.\Release64)
+.LINK
+    Project Home: http://mapguide.osgeo.org
+    PowerShell Community Extensions: https://pscx.codeplex.com/
+.NOTES
+    Author: Jackie Ng
+#>
+param(
+    [Parameter(HelpMessage = "The CPU platform to build for")]
+    [ValidateSet("Win32", "x64")]
+    [Alias("p")]
+    $platform = "Win32",
+    [Parameter(HelpMessage = "The build configuration to build for")]
+    [ValidateSet("debug", "release")]
+    [Alias("c")]
+    [string]
+    $config = "release",
+    [Parameter(HelpMessage = "The action to perform")]
+    [ValidateSet("build", "install", "buildinstall", "clean")]
+    [Alias("a")]
+    [string]
+    $action = "buildinstall",
+    [Parameter(HelpMessage = "The components to build")]
+    [ValidateSet("thirdparty", "fdo", "all")]
+    [Alias("w")]
+    [string]
+    $component = "all",
+    [Parameter(HelpMessage = "The directory where compiled binaries will be copied to. If relative, the path will be relative to the build root")]
+    [Alias("o")]
+    [string]
+    $output = ".\Release",
+    [Parameter(HelpMessage = "The directory where the FDO source resides in")]
+    [string]
+    $build_root = ".\",
+    [Parameter(HelpMessage = "The directory where the MySQL SDK resides in")]
+    [string]
+    $fdo_mysql = "",
+    [Parameter(HelpMessage = "The directory where the PostgreSQL SDK resides in")]
+    [string]
+    $fdo_postgresql = "",
+    [Parameter(HelpMessage = "The directory where the Oracle Instant Client SDK resides in")]
+    [string]
+    $fdo_oracle = ""
+)
+
+Function MakeDirIfNotExists([string]$dir) {
+    if (-Not(Test-Path $dir)) {
+        New-Item -ItemType directory -Path $dir
+    }
+}
+
+Try
+{
+    Import-Module Pscx
+
+    $env:FDOMYSQL = $fdo_mysql
+    $env:FDOORACLE = $fdo_oracle
+    $env:FDOPOSTGRESQL = $fdo_postgresql
+
+    $cwd = (Get-Item -Path "$build_root" -Verbose).FullName
+    pushd $cwd
+    Write-Host "Entering $cwd"
+
+    If ($platform.Equals("x64")) {
+        Write-Host "Setting FDO build environment for x64"
+        Invoke-BatchFile setenvironment.bat x86_amd64
+    } Else {
+        Write-Host "Setting FDO build environment for x86"
+        Invoke-BatchFile setenvironment.bat x86
+    }
+    if (-Not $?) {
+        throw "Failure invoking setenvironment.bat"
+    }
+
+    # Check perl
+    Write-Host "Checking for perl"
+    if (-Not (Get-Command perl -errorAction SilentlyContinue)) {
+        throw "perl not found. Ensure perl bin directory is in your PATH environment variable"
+    }
+
+    # Normalize the output path
+    if (-Not [System.IO.Path]::IsPathRooted($output)) {
+        $output = [System.IO.Path]::GetFullPath((Join-Path $cwd $output));
+    }
+
+    Write-Host "========= Action Summary ============"
+    Write-Host "Platform: $platform"
+    Write-Host "Configuration: $config"
+    Write-Host "Action: $action"
+    Write-Host "Component: $component"
+    Write-Host "Output Dir: $output"
+    Write-Host "Build Root: $build_root"
+    Write-Host "======== Env var summary ============"
+    Write-Host "FDOMYSQL: $env:FDOMYSQL"
+    Write-Host "FDOPOSTGRESQL: $env:FDOPOSTGRESQL"
+    Write-Host "FDOORACLE: $env:FDOORACLE"
+    Write-Host "====================================="
+
+    switch ($component) {
+        "thirdparty" {
+            & .\build_thirdparty.bat "-a=$action" "-o=$output" "-p=$platform" "-c=$config"
+        }
+        "fdo" {
+            & .\build.bat "-a=$action" "-o=$output" "-p=$platform" "-c=$config"
+        }
+        "all" {
+            & .\build_thirdparty.bat "-a=$action" "-o=$output" "-p=$platform" "-c=$config"
+            & .\build.bat "-a=$action" "-o=$output" "-p=$platform" "-c=$config"
+        }
+    }
+}
+Finally
+{
+    popd
+}
\ No newline at end of file

Modified: branches/2.6/vagrant/scripts/build_fdo.sh
===================================================================
--- branches/2.6/vagrant/scripts/build_fdo.sh	2015-07-27 12:14:02 UTC (rev 8718)
+++ branches/2.6/vagrant/scripts/build_fdo.sh	2015-07-27 12:26:06 UTC (rev 8719)
@@ -12,8 +12,8 @@
 FDO_BUILD_COMPONENT=
 
 # FDO version. Make sure this matches your FDO build source
-FDO_VER_MAJOR=3
-FDO_VER_MINOR=9
+FDO_VER_MAJOR=4
+FDO_VER_MINOR=0
 FDO_VER_REV=0
 
 # Extra flags to pass to FDO build scripts
@@ -104,7 +104,7 @@
 CMAKE=0
 
 MY_HOME_DIR=/home/vagrant
-FDO_SRC=${MY_HOME_DIR}/fdo/branches/3.9
+FDO_SRC=${MY_HOME_DIR}/fdo/branches/4.0
 #FDO_SRC=http://svn.osgeo.org/fdo/trunk
 FDO_BUILD_AREA=${BUILDROOT}/fdo_build_area
 FDO_FILELIST=${FDO_BUILD_AREA}/install/filelist
@@ -140,7 +140,7 @@
             ln -s /usr/lib ${MY_HOME_DIR}/fdo_rdbms_thirdparty_system/pgsql/$FDO_CPU/$LIB_DIRNAME
             echo "[info]: Symlinked PostgreSQL lib path (x86)"
         else
-            ln -s /usr/lib64 ${MY_HOME_DIR}/fdo_rdbms_thirdparty_system/pgsql/$FDO_CPU/$LIB_DIRNAME
+            ln -s /usr/lib ${MY_HOME_DIR}/fdo_rdbms_thirdparty_system/pgsql/$FDO_CPU/$LIB_DIRNAME
             echo "[info]: Symlinked PostgreSQL lib path (x64)"
         fi
     else
@@ -204,7 +204,12 @@
         mkdir -p $FDO_BUILD_AREA/Thirdparty/libcurl/lib
         if [ ! -e $FDO_BUILD_AREA/Thirdparty/libcurl/lib/linux ];
         then
-            ln -s /usr/lib/i386-linux-gnu $FDO_BUILD_AREA/Thirdparty/libcurl/lib/linux
+            if [ ${FDO_PLATFORM} -eq 32 ]; 
+            then
+                ln -s /usr/lib/i386-linux-gnu $FDO_BUILD_AREA/Thirdparty/libcurl/lib/linux
+            else
+                ln -s /usr/lib/x86_64-linux-gnu $FDO_BUILD_AREA/Thirdparty/libcurl/lib/linux
+            fi
         fi
 
         # symlink openssl to system installed copy
@@ -219,7 +224,12 @@
         mkdir -p $FDO_BUILD_AREA/Thirdparty/openssl/lib
         if [ ! -e $FDO_BUILD_AREA/Thirdparty/openssl/lib/linux ];
         then
-            ln -s /usr/lib/i386-linux-gnu $FDO_BUILD_AREA/Thirdparty/openssl/lib/linux
+            if [ ${FDO_PLATFORM} -eq 32 ]; 
+            then
+                ln -s /usr/lib/i386-linux-gnu $FDO_BUILD_AREA/Thirdparty/openssl/lib/linux
+            else
+                ln -s /usr/lib/x86_64-linux-gnu $FDO_BUILD_AREA/Thirdparty/openssl/lib/linux
+            fi
         fi
         echo "[info]: Replace internal openssl/libcurl with symlinks to Ubuntu-installed copies"
     fi
@@ -533,7 +543,7 @@
     FDO_BUILD_COMPONENT="Make tarball"
     # Create a binary tar ball for FDO
     cd ${FDO_INST}
-    tar -zcf ${BUILDROOT}/fdosdk-centos6-${FDO_BUILD_CPU}-${FDO_VER_FULL}_${REVISION}.tar.gz *
+    tar -Jcf ${BUILDROOT}/fdosdk-centos6-${FDO_BUILD_CPU}-${FDO_VER_FULL}_${REVISION}.tar.xz *
     check_build
 
     if [ ${UBUNTU} -eq 1 ];
@@ -547,4 +557,4 @@
 fi
 
 echo "[info]: FDO build complete!"
-echo Main build execution time: `expr $end_time - $start_time` s
\ No newline at end of file
+echo Main build execution time: `expr $end_time - $start_time` s

Modified: branches/2.6/vagrant/scripts/dpkgmapguide.sh
===================================================================
--- branches/2.6/vagrant/scripts/dpkgmapguide.sh	2015-07-27 12:14:02 UTC (rev 8718)
+++ branches/2.6/vagrant/scripts/dpkgmapguide.sh	2015-07-27 12:26:06 UTC (rev 8719)
@@ -6,50 +6,50 @@
 #   changelog - generated changelog file
 #   substvars - subst params created by dpkg-shlibdeps
 #   mapguideplatformbase/ - packaging directory for common MapGuide components
-#     usr/local/mapguideopensource-2.6.0/ - copied tree for common components
+#     usr/local/mapguideopensource-3.0.0/ - copied tree for common components
 #     DEBIAN/
 #       control - control file generated from dpkg-gencontrol
 #       symbols - symbols file generated from dpkg-gensymbols
 #
 #   mapguidecommon/ - packaging directory for common MapGuide components
-#     usr/local/mapguideopensource-2.6.0/ - copied tree for common components
+#     usr/local/mapguideopensource-3.0.0/ - copied tree for common components
 #     DEBIAN/
 #       control - control file generated from dpkg-gencontrol
 #       symbols - symbols file generated from dpkg-gensymbols
 #
 #   mapguidecoordsys/ - packaging directory for CS-Map coordinate system dictionaries
-#     usr/local/mapguideopensource-2.6.0/ - copied tree for common components
+#     usr/local/mapguideopensource-3.0.0/ - copied tree for common components
 #     DEBIAN/
 #       control - control file generated from dpkg-gencontrol
 #       symbols - symbols file generated from dpkg-gensymbols
 #
 #   mapguidecoordsyslite/ - packaging directory for CS-Map coordinate system dictionaries
-#     usr/local/mapguideopensource-2.6.0/ - copied tree for common components
+#     usr/local/mapguideopensource-3.0.0/ - copied tree for common components
 #     DEBIAN/
 #       control - control file generated from dpkg-gencontrol
 #       symbols - symbols file generated from dpkg-gensymbols
 #
 #   mapguideserver/ - packaging directory for MapGuide Server
-#     usr/local/mapguideopensource-2.6.0/ - copied tree for Server
+#     usr/local/mapguideopensource-3.0.0/ - copied tree for Server
 #     DEBIAN/
 #       control - control file generated from dpkg-gencontrol
 #       symbols - symbols file generated from dpkg-gensymbols
 #
 #   mapguidewebextensions/ - packaging directory for Web Extensions
-#     usr/local/mapguideopensource-2.6.0/ - copied tree for Web Extensions
+#     usr/local/mapguideopensource-3.0.0/ - copied tree for Web Extensions
 #     DEBIAN/
 #       control - control file generated from dpkg-gencontrol
 #       symbols - symbols file generated from dpkg-gensymbols
 #
 #   mapguidehttpd/ - packaging directory for Apache Bundle
-#     usr/local/mapguideopensource-2.6.0/ - copied tree for Apache bundle
+#     usr/local/mapguideopensource-3.0.0/ - copied tree for Apache bundle
 #     DEBIAN/
 #       control - control file generated from dpkg-gencontrol
 #       symbols - symbols file generated from dpkg-gensymbols
 #
 
 BUILDROOT=`pwd`
-MGBUILD=2.6.0
+MGBUILD=2.6.1
 FDOBUILD=3.9.0
 MGINST=usr/local/mapguideopensource-${MGBUILD}
 CPROOT=${ROOT}/${MGINST}

Modified: branches/2.6/vagrant/scripts/mapguidecommon_excludes.txt
===================================================================
--- branches/2.6/vagrant/scripts/mapguidecommon_excludes.txt	2015-07-27 12:14:02 UTC (rev 8718)
+++ branches/2.6/vagrant/scripts/mapguidecommon_excludes.txt	2015-07-27 12:26:06 UTC (rev 8719)
@@ -1,27 +1,26 @@
 libACE.so
-libACE.so.5.8.0
-libdwfcore-1.1.1.so
-libdwfemap-1.0.0.so
-libdwftk-7.1.1.so
-libMgFoundation-2.6.0.so
+libACE.so.6.2.6
+libdwfcore-1.7.0.so
+libdwftk-7.7.0.so
+libMgFoundation-2.6.1.so
 libMgFoundation.so
-libMgGeometry-2.6.0.so
+libMgGeometry-2.6.1.so
 libMgGeometry.so
-libMgGwsCommon-2.6.0.so
+libMgGwsCommon-2.6.1.so
 libMgGwsCommon.so
-libMgGwsQueryEngine-2.6.0.so
+libMgGwsQueryEngine-2.6.1.so
 libMgGwsQueryEngine.so
-libMgGwsResource-2.6.0.so
+libMgGwsResource-2.6.1.so
 libMgGwsResource.so
-libMgMdfModel-2.6.0.so
+libMgMdfModel-2.6.1.so
 libMgMdfModel.so
-libMgMdfParser-2.6.0.so
+libMgMdfParser-2.6.1.so
 libMgMdfParser.so
-libMgPlatformBase-2.6.0.so
+libMgPlatformBase-2.6.1.so
 libMgPlatformBase.so
-libMgRenderers-2.6.0.so
+libMgRenderers-2.6.1.so
 libMgRenderers.so
-libMgStylization-2.6.0.so
+libMgStylization-2.6.1.so
 libMgStylization.so
 libxerces-c-3.1.so
 libxerces-c.so

Modified: branches/2.6/vagrant/scripts/mginstallcentos.sh
===================================================================
--- branches/2.6/vagrant/scripts/mginstallcentos.sh	2015-07-27 12:14:02 UTC (rev 8718)
+++ branches/2.6/vagrant/scripts/mginstallcentos.sh	2015-07-27 12:26:06 UTC (rev 8719)
@@ -1,5 +1,7 @@
 #!/bin/bash
-URL="http://download.osgeo.org/mapguide/releases/2.6.0/Release"
+URL_ROOT="http://download.osgeo.org/mapguide/releases/2.6.1/Final"
+URL_PART="centos"
+URL="$URL_ROOT/$URL_PART"
 #URL="http://192.168.0.4/downloads"
 FDOVER_MAJOR_MINOR=3.9
 FDOVER_POINT=0
@@ -8,86 +10,97 @@
 FDOVER_MAJOR_MINOR_REV=${FDOVER_MAJOR_MINOR}.${FDOVER_POINT}
 FDOVER=${FDOVER_MAJOR_MINOR_REV}_${FDOVER_REV}
 MGVER_MAJOR_MINOR=2.6
-MGVER_POINT=0
+MGVER_POINT=1
 MGVER_REV=0
 MG_ARCH=i386
 MGVER_MAJOR_MINOR_REV=${MGVER_MAJOR_MINOR}.${MGVER_POINT}
 MGVER=${MGVER_MAJOR_MINOR_REV}.${MGVER_REV}
-FDO_TARBALL=fdosdk-centos6-${FDO_ARCH}-${FDOVER}.tar.gz
-MG_TARBALL=mapguideopensource-${MGVER}.${MG_ARCH}.tar.gz
+FDO_TARBALL=fdosdk-centos6-${FDO_ARCH}-${FDOVER}.tar.xz
+MG_TARBALL=mapguideopensource-${MGVER}.${MG_ARCH}.tar.xz
 MG_URL=${URL}/${MG_TARBALL}
 FDO_URL=${URL}/${FDO_TARBALL}
 
+# Must make sure we have .tar.xz support and any other deps if this is a minimal install
+yum install -y xz-lzma-compat wget libxslt libpng redhat-lsb-core 
+
 # Must have root
 if [[ $EUID -ne 0 ]]; then
     echo "You must run this script with superuser privileges"
     exit 1
 fi
 
-if [ ! -f ${FDO_TARBALL} ]; then
-wget -N ${FDO_URL}
-fi
+wget -N -c ${FDO_URL}
 
-#tar -C / -zxvf ${FDO_TARBALL}
 mkdir -p /usr/local/fdo-${FDOVER_MAJOR_MINOR_REV}
 echo "[install]: Extracting FDO"
-tar -C /usr/local/fdo-${FDOVER_MAJOR_MINOR_REV}/ -zxf ${FDO_TARBALL}
+tar -C /usr/local/fdo-${FDOVER_MAJOR_MINOR_REV}/ -Jxf ${FDO_TARBALL}
 
-if [ ! -f ${MG_TARBALL} ]; then
-wget -N ${MG_URL}
-fi
+wget -N -c ${MG_URL}
 
 echo "[install]: Extracting MapGuide"
-tar -C / -zxf ${MG_TARBALL}
+tar -C / -Jxf ${MG_TARBALL}
 
 # All of this is to make SELinux happy
-pushd /usr/local/fdo-${FDOVER_MAJOR_MINOR_REV}/lib
+pushd /usr/local/fdo-${FDOVER_MAJOR_MINOR_REV}/lib > /dev/null
 echo "[config]: Making binaries SELinux compatible"
 chcon -t textrel_shlib_t *.so
-popd
+popd > /dev/null
 
-pushd /usr/local/mapguideopensource-${MGVER_MAJOR_MINOR_REV}/server/bin
+pushd /usr/local/mapguideopensource-${MGVER_MAJOR_MINOR_REV}/server/bin > /dev/null
 echo "[config]: Making binaries SELinux compatible"
 chcon -t textrel_shlib_t *.so
 chcon -t textrel_shlib_t mgserver
-popd
+popd > /dev/null
 
-pushd /usr/local/mapguideopensource-${MGVER_MAJOR_MINOR_REV}/server/lib
+pushd /usr/local/mapguideopensource-${MGVER_MAJOR_MINOR_REV}/server/lib > /dev/null
 echo "[config]: Making binaries SELinux compatible"
 chcon -t textrel_shlib_t *.so
-popd
+popd > /dev/null
 
-pushd /usr/local/mapguideopensource-${MGVER_MAJOR_MINOR_REV}/lib
+pushd /usr/local/mapguideopensource-${MGVER_MAJOR_MINOR_REV}/lib > /dev/null
 echo "[config]: Making binaries SELinux compatible"
 chcon -t textrel_shlib_t *.so
-popd
+popd > /dev/null
 
-pushd /usr/local/mapguideopensource-${MGVER_MAJOR_MINOR_REV}/webserverextensions/lib
+pushd /usr/local/mapguideopensource-${MGVER_MAJOR_MINOR_REV}/webserverextensions/lib > /dev/null
 echo "[config]: Making binaries SELinux compatible"
 chcon -t textrel_shlib_t *.so
-popd
+popd > /dev/null
 
-pushd /usr/local/mapguideopensource-${MGVER_MAJOR_MINOR_REV}/webserverextensions/apache2/lib
+pushd /usr/local/mapguideopensource-${MGVER_MAJOR_MINOR_REV}/webserverextensions/apache2/lib > /dev/null
 echo "[config]: Making binaries SELinux compatible"
 chcon -t textrel_shlib_t *.so
-popd
+popd > /dev/null
 
-pushd /usr/local/mapguideopensource-${MGVER_MAJOR_MINOR_REV}/webserverextensions/apache2/modules
+pushd /usr/local/mapguideopensource-${MGVER_MAJOR_MINOR_REV}/webserverextensions/apache2/modules > /dev/null
 echo "[config]: Making binaries SELinux compatible"
 chcon -t textrel_shlib_t *.so
-popd
+popd > /dev/null
 
 echo "[config]: Fixing permissions for certain folders"
 chmod 777 /usr/local/mapguideopensource-${MGVER_MAJOR_MINOR_REV}/webserverextensions/www/TempDir
 
-pushd /usr/local/mapguideopensource-${MGVER_MAJOR_MINOR_REV}/webserverextensions/apache2/bin
+echo "[install]: Registering services"
+# The service control scripts as-is won't register as services as they lack chkconfig information
+# We'll inject this information by prepending this information and appending the existing script bodies
+# afterwards to the destination. We are not making symlinks.
+echo "#!/bin/sh" > /etc/init.d/mapguide
+echo "# chkconfig: 345 35 65" >> /etc/init.d/mapguide
+echo "# description: MapGuide Server Daemon" >> /etc/init.d/mapguide
+sed "s/\#\!\/bin\/sh//g" /usr/local/mapguideopensource-${MGVER_MAJOR_MINOR_REV}/server/bin/mapguidectl >> /etc/init.d/mapguide
+chmod +x /etc/init.d/mapguide
+chkconfig --add mapguide
+echo "#!/bin/sh" > /etc/init.d/apache-mapguide
+echo "# chkconfig: 345 35 65" >> /etc/init.d/apache-mapguide
+echo "# description: MapGuide Server Daemon" >> /etc/init.d/apache-mapguide
+sed "s/\#\!\/bin\/sh//g" /usr/local/mapguideopensource-${MGVER_MAJOR_MINOR_REV}/webserverextensions/apache2/bin/apachectl >> /etc/init.d/apache-mapguide
+chmod +x /etc/init.d/apache-mapguide
+chkconfig --add apache-mapguide
+
 echo "[install]: Starting httpd"
-./apachectl start
-popd
+/etc/init.d/mapguide start
 
-pushd /usr/local/mapguideopensource-${MGVER_MAJOR_MINOR_REV}/server/bin
 echo "[install]: Starting mgserver"
-./mgserverd.sh
-popd
+/etc/init.d/apache-mapguide start
 
 echo DONE

Modified: branches/2.6/vagrant/scripts/mginstallubuntu.sh
===================================================================
--- branches/2.6/vagrant/scripts/mginstallubuntu.sh	2015-07-27 12:14:02 UTC (rev 8718)
+++ branches/2.6/vagrant/scripts/mginstallubuntu.sh	2015-07-27 12:26:06 UTC (rev 8719)
@@ -1,6 +1,8 @@
 #!/bin/bash
 TEMPDIR=/tmp/build_mapguide
-URL="http://download.osgeo.org/mapguide/releases/2.6.0/Release/ubuntu12"
+URL_ROOT="http://download.osgeo.org/mapguide/releases/2.6.1/Final"
+URL_PART="ubuntu12"
+URL="$URL_ROOT/$URL_PART"
 #URL="http://192.168.0.5/downloads/ubuntu12"
 FDOVER_MAJOR_MINOR=3.9
 FDOVER_MAJOR_MINOR_REV=${FDOVER_MAJOR_MINOR}.0
@@ -8,7 +10,7 @@
 FDOARCH=i386
 FDOVER=${FDOVER_MAJOR_MINOR_REV}-${FDOBUILD}_${FDOARCH}
 MGVER_MAJOR_MINOR=2.6
-MGVER_MAJOR_MINOR_REV=${MGVER_MAJOR_MINOR}.0
+MGVER_MAJOR_MINOR_REV=${MGVER_MAJOR_MINOR}.1
 MGBUILD=0
 MGARCH=i386
 MGVER=${MGVER_MAJOR_MINOR_REV}-${MGBUILD}_${MGARCH}
@@ -35,25 +37,124 @@
 httpd_port=8008
 tomcat_port=8009
 
+fdo_provider_choice=""
+
 # Must have root
 if [[ $EUID -ne 0 ]]; then
     echo "You must run this script with superuser privileges"
     exit 1
 fi
 
+while [ $# -gt 0 ]; do    # Until you run out of parameters...
+    case "$1" in
+        -headless|--headless)
+	    HEADLESS=1
+            #shift
+	    ;;
+        -with-sdf|--with-sdf)
+            fdo_provider_choice="$fdo_provider_choice sdf"
+            #shift
+            ;;
+        -with-shp|--with-shp)
+            fdo_provider_choice="$fdo_provider_choice shp"
+            #shift
+            ;;
+        -with-sqlite|--with-sqlite)
+            fdo_provider_choice="$fdo_provider_choice sqlite"
+            #shift
+            ;;
+        -with-gdal|--with-gdal)
+            fdo_provider_choice="$fdo_provider_choice gdal"
+            #shift
+            ;;
+        -with-ogr|--with-ogr)
+            fdo_provider_choice="$fdo_provider_choice ogr"
+            #shift
+            ;;
+        -with-kingoracle|--with-kingoracle)
+            fdo_provider_choice="$fdo_provider_choice kingoracle"
+            #shift
+            ;;
+        -with-wfs|--with-wfs)
+            fdo_provider_choice="$fdo_provider_choice wfs"
+            #shift
+            ;;
+        -with-wms|--with-wms)
+            fdo_provider_choice="$fdo_provider_choice wms"
+            #shift
+            ;;
+        -server-ip|--server-ip)
+            server_ip="$2"
+            webtier_server_ip="$2"
+            shift
+            ;;
+        -admin-port|--admin-port)
+            admin_port=$2
+            shift
+            ;;
+        -client-port|--client-port)
+            client_port=$2
+            shift
+            ;;
+        -site-port|--site-port)
+            site_port=$2
+            shift
+            ;;
+        -httpd-port|--httpd-port)
+            httpd_port=$2
+            shift
+            ;;
+        -tomcat-port|--tomcat-port)
+            tomcat_port=$2
+            shift
+            ;;
+        -help|--help)
+            echo "Usage: $0 (options)"
+            echo "Options:"
+            echo "  --headless [Install headlessly (skip UI)]"
+            echo "  --with-sdf [Include SDF Provider]"
+            echo "  --with-shp [Include SHP Provider]"
+            echo "  --with-sqlite [Include SQLite Provider]"
+            echo "  --with-gdal [Include GDAL Provider]"
+            echo "  --with-ogr [Include OGR Provider]"
+            echo "  --with-kingoracle [Include King Oracle Provider]"
+            echo "  --with-wfs [Include WFS Provider]"
+            echo "  --with-wms [Include WMS Provider]"
+            echo "  --server-ip [Server IP, default: 127.0.0.1]"
+            echo "  --admin-port [Admin Server Port, default: 2810]"
+            echo "  --client-port [Client Server Port, default: 2811]"
+            echo "  --site-port [Site Server Port, default: 2812]"
+            echo "  --httpd-port [HTTPD port, default: 8008]"
+            echo "  --tomcat-port [Tomcat Port, default: 8009]"
+            exit
+            ;;
+    esac
+    shift   # Check next set of parameters.
+done
+
+if [ "$HEADLESS" != "1" ]
+then
 # Install required packages 
 apt-get -y install dialog libexpat1 libssl1.0.0 odbcinst unixodbc libcurl3 libxslt1.1
+else
+# Install required packages 
+apt-get -y install libexpat1 libssl1.0.0 odbcinst unixodbc libcurl3 libxslt1.1
+fi
 
 DIALOG=${DIALOG=dialog}
 
 main()
 {
-    dialog_welcome
-    dialog_fdo_provider
-    dialog_server
-    dialog_webtier
-    #dialog_coordsys
-    #dump_configuration
+    if [ "$HEADLESS" != "1" ]
+    then
+        dialog_welcome
+        dialog_fdo_provider
+        dialog_server
+        dialog_webtier
+        #dialog_coordsys
+    else
+        dump_configuration
+    fi
     install_fdo
     install_mapguide_packages
     post_install
@@ -472,23 +573,20 @@
     echo "[config]: Fixing permissions for certain folders"
     chmod 777 /usr/local/mapguideopensource-${MGVER_MAJOR_MINOR_REV}/webserverextensions/www/TempDir
 
-    echo "Creating lock file directory for MapGuide Server"
-    # Create lock file directory for Server
-    if [ ! -d /var/lock/mgserver ]; then
-      mkdir /var/lock/mgserver
-    fi
-    echo "Starting httpd"
-    pushd /usr/local/mapguideopensource-${MGVER_MAJOR_MINOR_REV}/webserverextensions/apache2/bin
-    ./apachectl start
-    popd
-    echo "Starting tomcat"
+    echo "[config]: Registering Services"
+    ln -s /usr/local/mapguideopensource-${MGVER_MAJOR_MINOR_REV}/server/bin/mapguidectl /etc/init.d/mapguide
+    ln -s /usr/local/mapguideopensource-${MGVER_MAJOR_MINOR_REV}/webserverextensions/apache2/bin/apachectl /etc/init.d/apache-mapguide
+    update-rc.d mapguide defaults 35 65
+    update-rc.d apache-mapguide defaults 30 70
+    
+    echo "[install]: Starting httpd"
+    /etc/init.d/apache-mapguide start
+    echo "[install]: Starting tomcat"
     pushd /usr/local/mapguideopensource-${MGVER_MAJOR_MINOR_REV}/webserverextensions/tomcat/bin
     sh ./startup.sh
     popd
-    echo "Starting mgserver"
-    pushd /usr/local/mapguideopensource-${MGVER_MAJOR_MINOR_REV}/server/bin
-    ./mgserverd.sh
-    popd
+    echo "[install]: Starting mgserver"
+    /etc/init.d/mapguide start
     echo "DONE!"
 }
 

Added: branches/2.6/vagrant/scripts/mguninstallcentos.sh
===================================================================
--- branches/2.6/vagrant/scripts/mguninstallcentos.sh	                        (rev 0)
+++ branches/2.6/vagrant/scripts/mguninstallcentos.sh	2015-07-27 12:26:06 UTC (rev 8719)
@@ -0,0 +1,54 @@
+#!/bin/bash
+FDOVER_MAJOR_MINOR=3.9
+FDOVER_POINT=0
+FDOVER_MAJOR_MINOR_REV=${FDOVER_MAJOR_MINOR}.${FDOVER_POINT}
+MGVER_MAJOR_MINOR=2.6
+MGVER_POINT=1
+MGVER_MAJOR_MINOR_REV=${MGVER_MAJOR_MINOR}.${MGVER_POINT}
+
+FDOINST=/usr/local/fdo-${FDOVER_MAJOR_MINOR_REV}
+MGINST=/usr/local/mapguideopensource-${MGVER_MAJOR_MINOR_REV}
+
+# Must have root
+if [[ $EUID -ne 0 ]]; then
+    echo "You must run this script with superuser privileges"
+    exit 1
+fi
+
+do_uninstall()
+{
+    if [ -f /etc/init.d/mapguide ]; then
+        echo "[uninstall]: Remove mapguide service"
+        /etc/init.d/mapguide stop
+        chkconfig --del mapguide
+        rm -f /etc/init.d/mapguide
+    fi
+
+    if [ -f /etc/init.d/apache-mapguide ]; then
+        echo "[uninstall]: Remove apache-mapguide service"
+        /etc/init.d/apache-mapguide stop
+        chkconfig --del apache-mapguide
+        rm -f /etc/init.d/apache-mapguide
+    fi
+
+    if [ -d $MGINST ]; then
+        echo "[uninstall]: Uninstalling MapGuide"
+        rm -rf $MGINST
+    fi
+
+    if [ -d $FDOINST ]; then
+        echo "[uninstall]: Uninstalling FDO"
+        rm -rf $FDOINST
+    fi
+    
+    echo "Uninstall completed"
+}
+
+while true; do
+    read -p 'This script will remove everything under the MapGuide and FDO installation directories and un-register any installed services. Do you wish to uninstall MapGuide? [y/n]' yn
+    case $yn in
+        [Yy]* ) do_uninstall; break;;
+        [Nn]* ) exit;;
+        * ) echo "Please answer yes or no.";;
+    esac
+done

Modified: branches/2.6/vagrant/scripts/mguninstallubuntu.sh
===================================================================
--- branches/2.6/vagrant/scripts/mguninstallubuntu.sh	2015-07-27 12:14:02 UTC (rev 8718)
+++ branches/2.6/vagrant/scripts/mguninstallubuntu.sh	2015-07-27 12:26:06 UTC (rev 8719)
@@ -2,20 +2,48 @@
 
 # Must have root
 if [[ $EUID -ne 0 ]]; then
-	echo "You must run this script with superuser privileges"
-	exit 1
+    echo "You must run this script with superuser privileges"
+    exit 1
 fi
 
-# Remove Ubuntu packages for MapGuide
-for file in server webextensions httpd coordsys coordsys-lite common platformbase
-do
-  dpkg --remove mapguideopensource-${file}
-done
+do_uninstall()
+{
+    # Stop and un-register mapguide service
+    echo "[uninstall]: Removing mapguide service"
+    if [ -f /etc/init.d/mapguide ]; then
+        /etc/init.d/mapguide stop
+        update-rc.d -f mapguide remove
+        rm -f /etc/init.d/mapguide
+    fi
+    echo "[uninstall]: Removing apache-mapguide service"
+    if [ -f /etc/init.d/apache-mapguide ]; then
+        /etc/init.d/apache-mapguide stop
+        update-rc.d -f apache-mapguide remove
+        rm -f /etc/init.d/apache-mapguide
+    fi
 
-# Remove Ubuntu packages for FDO
-for file in gdal kingoracle ogr rdbms sdf shp sqlite wfs wms arcsde core
-do
-  dpkg --remove fdo-${file}
-done
+    # Remove Ubuntu packages for MapGuide
+    echo "[uninstall]: MapGuide packages"
+    for file in server webextensions httpd coordsys coordsys-lite common platformbase
+    do
+        dpkg --remove mapguideopensource-${file}
+    done
 
+    # Remove Ubuntu packages for FDO
+    echo "[uninstall]: FDO packages"
+    for file in gdal kingoracle ogr rdbms sdf shp sqlite wfs wms arcsde core
+    do
+        dpkg --remove fdo-${file}
+    done
+    
+    echo "Uninstall completed"
+}
 
+while true; do
+    read -p 'This script will uninstall the MapGuide and FDO packages and un-register any installed services. Do you wish to uninstall MapGuide? [y/n]' yn
+    case $yn in
+        [Yy]* ) do_uninstall; break;;
+        [Nn]* ) exit;;
+        * ) echo "Please answer yes or no.";;
+    esac
+done
\ No newline at end of file

Modified: branches/2.6/vagrant/scripts/platformbase_excludes.txt
===================================================================
--- branches/2.6/vagrant/scripts/platformbase_excludes.txt	2015-07-27 12:14:02 UTC (rev 8718)
+++ branches/2.6/vagrant/scripts/platformbase_excludes.txt	2015-07-27 12:26:06 UTC (rev 8719)
@@ -6,7 +6,7 @@
 libdbxml-2.5.so
 libdbxml.so
 liblib_json.so
-libMgMapGuideCommon-2.6.0.so
+libMgMapGuideCommon-2.6.1.so
 libMgMapGuideCommon.so
 libxqilla.so
 libxqilla.so.5

Added: branches/2.6/vagrant/scripts/smoke_test.sh
===================================================================
--- branches/2.6/vagrant/scripts/smoke_test.sh	                        (rev 0)
+++ branches/2.6/vagrant/scripts/smoke_test.sh	2015-07-27 12:26:06 UTC (rev 8719)
@@ -0,0 +1,199 @@
+#!/bin/bash
+
+# smoke_test.sh
+#
+# Performs basic smoke testing of a Linux installation of MapGuide
+#
+#  1. Checks that the mgserver process is running
+#  2. Checks that the httpd process is running
+#  3. Checks that the mapagent is reachable and records the result of a GETSITEINFO request made with curl
+#  4. Checks that the a fair number of FDO providers are functional with a GETFEATUREPROVIDERS request made with curl
+#  5. Checks that the Sheboygan dataset can be loaded via the mapagent with the APPLYRESOURCEPACKAGE request made with curl
+#  6. Checks that the Sheboygan data is indeed loaded by fetching for various resource contents with curl
+#  7. Checks that we can walk schemas by issuing a series of DESCRIBESCHEMA calls
+#  8. Checks that the AJAX viewer URL returns HTTP 200
+#  9. Checks that the Fusion viewer URL with the 5 templates all return HTTP 200
+
+pass=0
+fail=0
+http_port=8008
+url_root="http://localhost:$http_port/mapguide"
+mapagent_url="$url_root/mapagent/mapagent.fcgi"
+ajaxviewer_url="$url_root/mapviewerajax/"
+fusion_root="$url_root/fusion/templates/mapguide"
+package_path=/tmp/Sheboygan.mgp
+
+fsids=("Data/BuildingOutlines.FeatureSource" "Data/CityLimits.FeatureSource" "Data/HydrographicLines.FeatureSource" "Data/HydrographicPolygons.FeatureSource" "Data/Islands.FeatureSource" "Data/LandUse.FeatureSource" "Data/Parcels.FeatureSource" "Data/Rail.FeatureSource" "Data/RoadCenterLines.FeatureSource" "Data/Soils.FeatureSource" "Data/Trees.FeatureSource" "Data/VotingDistricts.FeatureSource")
+basic_layout="Library://Samples/Sheboygan/Layouts/SheboyganPhp.WebLayout"
+flex_layout="Library://Samples/Sheboygan/Layouts/Slate.ApplicationDefinition"
+
+check_mgserver()
+{
+	echo "[check]: mgserver is running"
+	if [ "$(pidof mgserver)" ]
+	then
+		pass=$((pass + 1))
+		echo "    [check - PASS]: mgserver found"
+	else
+		fail=$((fail + 1))
+		echo "    [check - FAIL]: mgserver not found"
+	fi
+}
+
+check_httpd()
+{
+	echo "[check]: httpd is running"
+	if [ "$(pidof httpd)" ]
+	then
+		pass=$((pass + 1))
+		echo "    [check - PASS]: httpd found"
+	else
+		fail=$((fail + 1))
+		echo "    [check - FAIL]: httpd not found"
+	fi
+}
+
+assert_request()
+{
+	request_method=$1
+	request_url=$2
+	test_name=$3
+	output_file=$4
+	expected_status=$5
+	username=$6
+	password=$7
+	if [ -z "$username" ]
+	then
+		#echo "[curl] request without credentials"
+		curl -s -i -X $request_method "$request_url" -o $output_file
+	else
+		#echo "[curl] request with credentials"
+		curl -u $username:$password -s -i -X $request_method "$request_url" -o $output_file
+	fi
+	status=`cat $output_file | grep HTTP/1.1 | awk {'print $2'}`
+	if [ "$status" != "$expected_status" ]
+	then
+		fail=$((fail + 1))
+		echo "    [check - FAIL]: Expected HTTP status of $expected_status. Check $output_file for more information"
+	else
+		pass=$((pass + 1))
+		echo "    [check - PASS]: $test_name"
+	fi
+}
+
+assert_package_load()
+{
+	request_method="POST"
+	request_url="$mapagent_url"
+	expected_status=$1
+	test_name=$2
+	output_file=$3
+	username=$4
+	password=$5
+	if [ -z "$username" ]
+	then
+		#echo "[curl] request without credentials"
+		curl -s -i -X $request_method -d 'MAX_FILE_SIZE=100000000' -d 'OPERATION=APPLYRESOURCEPACKAGE' -d 'VERSION=1.0.0' -d 'LOCALE=en' -d PACKAGE=$package_path "$request_url" -o $output_file
+	else
+		#echo "[curl] request with credentials"
+		curl -u $username:$password -s -i -X $request_method -d 'MAX_FILE_SIZE=100000000' -d 'OPERATION=APPLYRESOURCEPACKAGE' -d 'VERSION=1.0.0' -d 'LOCALE=en' -d PACKAGE=$package_path "$request_url" -o $output_file
+	fi	
+	status=`cat $output_file | grep HTTP/1.1 | awk {'print $2'}`
+	if [ "$status" != "$expected_status" ]
+	then
+		fail=$((fail + 1))
+		echo "    [check - FAIL]: Expected HTTP status of $expected_status. Check $output_file for more information"
+	else
+		pass=$((pass + 1))
+		echo "    [check - PASS]: $test_name"
+	fi
+}
+
+check_createsession()
+{
+	echo "[check]: Create Session"
+	assert_request "POST" "$mapagent_url?OPERATION=CREATESESSION&VERSION=1.0.0&LOCALE=en" "CREATESESSION un-authenticated" "unauthenticated.txt" "401"
+	assert_request "POST" "$mapagent_url?OPERATION=CREATESESSION&VERSION=1.0.0&LOCALE=en" "CREATESESSION admin" "CREATESESSION_admin.txt" "200" "Administrator" "admin"
+	assert_request "POST" "$mapagent_url?OPERATION=CREATESESSION&VERSION=1.0.0&LOCALE=en" "CREATESESSION anon" "CREATESESSION_anon.txt" "200" "Anonymous"
+}
+
+check_siteversion()
+{
+	echo "[check]: Get MapGuide version from mapagent"
+	assert_request "GET" "$mapagent_url?OPERATION=GETSITEINFO&VERSION=1.0.0&LOCALE=en" "GETSITEINFO admin" "GETSITEINFO_admin.txt" "200" "Administrator" "admin"
+	assert_request "GET" "$mapagent_url?OPERATION=GETSITEINFO&VERSION=1.0.0&LOCALE=en" "GETSITEINFO anon" "GETSITEINFO_anon.txt" "200" "Anonymous"
+	assert_request "GET" "$mapagent_url?OPERATION=GETSITEINFO&VERSION=1.0.0&LOCALE=en" "GETSITEINFO un-authenticated" "unauthenticated.txt" "401"
+	assert_request "GET" "$mapagent_url?OPERATION=GETSITEINFO&VERSION=1.0.0&LOCALE=en" "GETSITEINFO bad credentials" "unauthenticated.txt" "401" "foo" "bar"
+}
+
+check_featureproviders()
+{
+	echo "[check]: Get FDO Feature Provider List"
+	assert_request "GET" "$mapagent_url?OPERATION=GETFEATUREPROVIDERS&VERSION=1.0.0&LOCALE=en" "GETFEATUREPROVIDERS admin" "GETFEATUREPROVIDERS_admin.txt" "200" "Administrator" "admin"
+	assert_request "GET" "$mapagent_url?OPERATION=GETFEATUREPROVIDERS&VERSION=1.0.0&LOCALE=en" "GETFEATUREPROVIDERS anon" "GETFEATUREPROVIDERS_anon.txt" "200" "Anonymous"
+	assert_request "GET" "$mapagent_url?OPERATION=GETFEATUREPROVIDERS&VERSION=1.0.0&LOCALE=en" "GETFEATUREPROVIDERS un-authenticated" "unauthenticated.txt" "401"
+	assert_request "GET" "$mapagent_url?OPERATION=GETFEATUREPROVIDERS&VERSION=1.0.0&LOCALE=en" "GETFEATUREPROVIDERS bad credentials" "unauthenticated.txt" "401" "foo" "bar"
+}
+
+check_loadpackage()
+{
+	echo "[check]: Load Package"
+	assert_package_load "401" "APPLYRESOURCEPACKAGE un-authenticated" "unauthenticated.txt"
+	assert_package_load "401" "APPLYRESOURCEPACKAGE anon un-authenticated" "APPLYRESOURCEPACKAGE_anon.txt" "Anonymous"
+	assert_package_load "200" "APPLYRESOURCEPACKAGE admin" "APPLYRESOURCEPACKAGE_admin.txt" "Administrator" "admin"
+}
+
+check_postpackageload()
+{
+	assert_request "GET" "$mapagent_url?OPERATION=ENUMERATERESOURCES&VERSION=1.0.0&LOCALE=en&RESOURCEID=Library://&DEPTH=-1" "ENUMERATERESOURCES un-authenticated" "unauthenticated.txt" "401"
+	assert_request "GET" "$mapagent_url?OPERATION=ENUMERATERESOURCES&VERSION=1.0.0&LOCALE=en&RESOURCEID=Library://&DEPTH=-1" "ENUMERATERESOURCES admin" "ENUMERATERESOURCES_admin.txt" "200" "Administrator" "admin"
+	assert_request "GET" "$mapagent_url?OPERATION=ENUMERATERESOURCES&VERSION=1.0.0&LOCALE=en&RESOURCEID=Library://&DEPTH=-1" "ENUMERATERESOURCES anon" "ENUMERATERESOURCES_anon.txt" "200" "Anonymous"
+
+	echo "[check]: Verify some resources exist after loading package"
+	for r in "${fsids[@]}"
+	do
+		resid="Library://Samples/Sheboygan/$r"
+		assert_request "GET" "$mapagent_url?OPERATION=GETRESOURCECONTENT&VERSION=1.0.0&LOCALE=en&RESOURCEID=$resid" "GETRESOURCECONTENT admin $resid" "GETRESOURCE_admin.txt" "200" "Administrator" "admin"
+		assert_request "GET" "$mapagent_url?OPERATION=GETRESOURCECONTENT&VERSION=1.0.0&LOCALE=en&RESOURCEID=$resid" "GETRESOURCECONTENT anon $resid" "GETRESOURCE_anon.txt" "200" "Anonymous"
+	done
+}
+
+check_schemawalk()
+{
+	echo "[check]: Check we can walk some feature sources"
+	for r in "${fsids[@]}"
+	do
+		resid="Library://Samples/Sheboygan/$r"
+		assert_request "GET" "$mapagent_url?OPERATION=DESCRIBEFEATURESCHEMA&VERSION=1.0.0&LOCALE=en&RESOURCEID=$resid" "DESCRIBEFEATURESCHEMA admin $resid" "DESCRIBEFEATURESCHEMA_admin.txt" "200" "Administrator" "admin"
+		assert_request "GET" "$mapagent_url?OPERATION=DESCRIBEFEATURESCHEMA&VERSION=1.0.0&LOCALE=en&RESOURCEID=$resid" "DESCRIBEFEATURESCHEMA anon $resid" "DESCRIBEFEATURESCHEMA_anon.txt" "200" "Anonymous"
+	done
+}
+
+check_ajaxviewer()
+{
+	echo "[check]: AJAX viewer"
+	assert_request "GET" "$ajaxviewer_url?WEBLAYOUT=$basic_layout&USERNAME=Anonymous" "Load AJAX Viewer" "AJAXVIEWER_anon.txt" "200"
+}
+
+check_fusion()
+{
+	templates=("slate" "limegold" "aqua" "turquoiseyellow" "maroon")
+	for template in "${templates[@]}"
+	do
+		echo "[check]: Fusion viewer $template"
+		assert_request "GET" "$fusion_root/$template/index.html?ApplicationDefinition=$flex_layout" "Load Fusion template $template" "Fusion_$template.txt" "200"
+	done
+}
+
+check_mgserver
+check_httpd
+check_createsession
+check_siteversion
+check_featureproviders
+check_loadpackage
+check_postpackageload
+check_schemawalk
+check_ajaxviewer
+check_fusion
+
+echo "Pass: $pass, Fail: $fail"

Modified: branches/2.6/vagrant/sources/README.txt
===================================================================
--- branches/2.6/vagrant/sources/README.txt	2015-07-27 12:14:02 UTC (rev 8718)
+++ branches/2.6/vagrant/sources/README.txt	2015-07-27 12:26:06 UTC (rev 8719)
@@ -2,4 +2,37 @@
 
 fdo_rdbms_thirdparty.tar.gz
 fdo-checkout.tar.gz
-mapguide-checkout.tar.gz
\ No newline at end of file
+mapguide-checkout.tar.gz
+
+For branch-based builds, append the respective MapGuide and FDO versions to the tarball name.
+
+For example if building for MapGuide Open Source 2.6 (with FDO 3.9), your tarballs should be named:
+ * fdo-checkout-3.9.tar.gz
+ * mapguide-checkout-2.6.tar.gz
+
+fdo_rdbms_thirdparty.tar.gz is a tarball containing the following directory structure:
+
+    fdo_rdbms_thirdparty
+        mysql
+            x86 [Put 32-bit MySQL ConnectorC SDK here]
+            x64 [Put 64-bit MySQL ConnectorC SDK here]
+        oracle
+            x86 [Put 32-bit Oracle Instant Client SDK here]
+            x64 [Put 64-bit Oracle Instant Client SDK here]
+        pgsql [Put libpq SDK here]
+
+fdo-checkout.tar.gz is a tarball containing the following directory structure:
+
+    trunk [svn checkout of http://svn.osgeo.org/fdo/trunk]
+
+If this is a branch tarball, the folder should be the FDO version number, for example FDO 3.9 tarball should be:
+
+    3.9 [svn checkout of http://svn.osgeo.org/fdo/branches/3.9]
+
+mapguide-checkout.tar.gz is tarball containing the following directory structure:
+
+    MgDev [svn checkout of http://svn.osgeo.org/mapguide/trunk/MgDev]
+
+If this is a branch tarball, the folder should be the same, but it should be the svn checkout of the respective branch url, for example MGOS 2.6 tarball should be:
+
+    MgDev [svn checkout of http://svn.osgeo.org/mapguide/branches/2.6/MgDev]
\ No newline at end of file

Added: branches/2.6/vagrant/ubuntu/test_x64/Vagrantfile
===================================================================
--- branches/2.6/vagrant/ubuntu/test_x64/Vagrantfile	                        (rev 0)
+++ branches/2.6/vagrant/ubuntu/test_x64/Vagrantfile	2015-07-27 12:26:06 UTC (rev 8719)
@@ -0,0 +1,123 @@
+# -*- mode: ruby -*-
+# vi: set ft=ruby :
+
+# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
+VAGRANTFILE_API_VERSION = "2"
+
+Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
+  # All Vagrant configuration is done here. The most common configuration
+  # options are documented and commented below. For a complete reference,
+  # please see the online documentation at vagrantup.com.
+
+  # Every Vagrant virtual environment requires a box to build off of.
+  config.vm.box = "ubuntu12-amd64"
+
+  # The url from where the 'config.vm.box' box will be fetched if it
+  # doesn't already exist on the user's system.
+  # config.vm.box_url = "http://domain.com/path/to/above.box"
+
+  # Create a forwarded port mapping which allows access to a specific port
+  # within the machine from a port on the host machine. In the example below,
+  # accessing "localhost:8080" will access port 80 on the guest machine.
+  # config.vm.network :forwarded_port, guest: 80, host: 8080
+
+  # Create a private network, which allows host-only access to the machine
+  # using a specific IP.
+  # config.vm.network :private_network, ip: "192.168.33.10"
+
+  # Create a public network, which generally matched to bridged network.
+  # Bridged networks make the machine appear as another physical device on
+  # your network.
+  # config.vm.network :public_network
+
+  # If true, then any SSH connections made will enable agent forwarding.
+  # Default value: false
+  # config.ssh.forward_agent = true
+
+  # Share an additional folder to the guest VM. The first argument is
+  # the path on the host to the actual folder. The second argument is
+  # the path on the guest to mount the folder. And the optional third
+  # argument is a set of non-required options.
+  config.vm.synced_folder "../../sources", "/mapguide_sources"
+
+  # Provider-specific configuration so you can fine-tune various
+  # backing providers for Vagrant. These expose provider-specific options.
+  # Example for VirtualBox:
+  #
+  # config.vm.provider :virtualbox do |vb|
+  #   # Don't boot with headless mode
+  #   vb.gui = true
+  #
+  #   # Use VBoxManage to customize the VM. For example to change memory:
+  #   vb.customize ["modifyvm", :id, "--memory", "1024"]
+  # end
+  #
+  # View the documentation for the provider you're using for more
+  # information on available options.
+
+  # Enable provisioning with Puppet stand alone.  Puppet manifests
+  # are contained in a directory path relative to this Vagrantfile.
+  # You will need to create the manifests directory and a manifest in
+  # the file vagrant-mapguide-ubuntu-precise32.pp in the manifests_path directory.
+  #
+  # An example Puppet manifest to provision the message of the day:
+  #
+  # # group { "puppet":
+  # #   ensure => "present",
+  # # }
+  # #
+  # # File { owner => 0, group => 0, mode => 0644 }
+  # #
+  # # file { '/etc/motd':
+  # #   content => "Welcome to your Vagrant-built virtual machine!
+  # #               Managed by Puppet.\n"
+  # # }
+  #
+  # config.vm.provision :puppet do |puppet|
+  #   puppet.manifests_path = "manifests"
+  #   puppet.manifest_file  = "site.pp"
+  # end
+
+  # Enable provisioning with chef solo, specifying a cookbooks path, roles
+  # path, and data_bags path (all relative to this Vagrantfile), and adding
+  # some recipes and/or roles.
+  #
+  # config.vm.provision :chef_solo do |chef|
+  #   chef.cookbooks_path = "../my-recipes/cookbooks"
+  #   chef.roles_path = "../my-recipes/roles"
+  #   chef.data_bags_path = "../my-recipes/data_bags"
+  #   chef.add_recipe "mysql"
+  #   chef.add_role "web"
+  #
+  #   # You may also specify custom JSON attributes:
+  #   chef.json = { :mysql_password => "foo" }
+  # end
+
+  # Enable provisioning with chef server, specifying the chef server URL,
+  # and the path to the validation key (relative to this Vagrantfile).
+  #
+  # The Opscode Platform uses HTTPS. Substitute your organization for
+  # ORGNAME in the URL and validation key.
+  #
+  # If you have your own Chef Server, use the appropriate URL, which may be
+  # HTTP instead of HTTPS depending on your configuration. Also change the
+  # validation key to validation.pem.
+  #
+  # config.vm.provision :chef_client do |chef|
+  #   chef.chef_server_url = "https://api.opscode.com/organizations/ORGNAME"
+  #   chef.validation_key_path = "ORGNAME-validator.pem"
+  # end
+  #
+  # If you're using the Opscode platform, your validator client is
+  # ORGNAME-validator, replacing ORGNAME with your organization name.
+  #
+  # If you have your own Chef Server, the default validation client name is
+  # chef-validator, unless you changed the configuration.
+  #
+  #   chef.validation_client_name = "ORGNAME-validator"
+  
+  config.vm.provision "shell",
+    privileged: false,
+    path: "provision.sh",
+    args: ["#{ENV['DOWNLOAD_HOST']}", "#{ENV['MG_DIST_DIR']}"]
+end

Added: branches/2.6/vagrant/ubuntu/test_x64/provision.sh
===================================================================
--- branches/2.6/vagrant/ubuntu/test_x64/provision.sh	                        (rev 0)
+++ branches/2.6/vagrant/ubuntu/test_x64/provision.sh	2015-07-27 12:26:06 UTC (rev 8719)
@@ -0,0 +1,16 @@
+#!/bin/bash
+DOWNLOAD_HOST=$1
+URI_PART=$2
+DIST_DIR="ubuntu_x64"
+echo Download host is: $DOWNLOAD_HOST
+wget "http://$DOWNLOAD_HOST/$URI_PART/Sheboygan.mgp"
+wget "http://$DOWNLOAD_HOST/$URI_PART/smoke_test.sh"
+sudo mv Sheboygan.mgp /tmp/
+wget "http://$DOWNLOAD_HOST/$URI_PART/$DIST_DIR/mginstallubuntu.sh"
+sed -i 's/URL="$URL_ROOT\/$URL_PART"/URL="http:\/\/'"$DOWNLOAD_HOST"'\/'"$URI_PART"'\/'"$DIST_DIR"'"/g' mginstallubuntu.sh
+chmod +x smoke_test.sh
+chmod +x mginstallubuntu.sh
+sudo ./mginstallubuntu.sh --headless --with-sdf --with-shp --with-ogr --with-gdal --with-sqlite
+echo Wait 10s before running smoke test
+sleep 10s
+sudo ./smoke_test.sh
\ No newline at end of file

Added: branches/2.6/vagrant/ubuntu/test_x86/Vagrantfile
===================================================================
--- branches/2.6/vagrant/ubuntu/test_x86/Vagrantfile	                        (rev 0)
+++ branches/2.6/vagrant/ubuntu/test_x86/Vagrantfile	2015-07-27 12:26:06 UTC (rev 8719)
@@ -0,0 +1,123 @@
+# -*- mode: ruby -*-
+# vi: set ft=ruby :
+
+# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
+VAGRANTFILE_API_VERSION = "2"
+
+Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
+  # All Vagrant configuration is done here. The most common configuration
+  # options are documented and commented below. For a complete reference,
+  # please see the online documentation at vagrantup.com.
+
+  # Every Vagrant virtual environment requires a box to build off of.
+  config.vm.box = "ubuntu12-i386"
+
+  # The url from where the 'config.vm.box' box will be fetched if it
+  # doesn't already exist on the user's system.
+  # config.vm.box_url = "http://domain.com/path/to/above.box"
+
+  # Create a forwarded port mapping which allows access to a specific port
+  # within the machine from a port on the host machine. In the example below,
+  # accessing "localhost:8080" will access port 80 on the guest machine.
+  # config.vm.network :forwarded_port, guest: 80, host: 8080
+
+  # Create a private network, which allows host-only access to the machine
+  # using a specific IP.
+  # config.vm.network :private_network, ip: "192.168.33.10"
+
+  # Create a public network, which generally matched to bridged network.
+  # Bridged networks make the machine appear as another physical device on
+  # your network.
+  # config.vm.network :public_network
+
+  # If true, then any SSH connections made will enable agent forwarding.
+  # Default value: false
+  # config.ssh.forward_agent = true
+
+  # Share an additional folder to the guest VM. The first argument is
+  # the path on the host to the actual folder. The second argument is
+  # the path on the guest to mount the folder. And the optional third
+  # argument is a set of non-required options.
+  config.vm.synced_folder "../../sources", "/mapguide_sources"
+
+  # Provider-specific configuration so you can fine-tune various
+  # backing providers for Vagrant. These expose provider-specific options.
+  # Example for VirtualBox:
+  #
+  # config.vm.provider :virtualbox do |vb|
+  #   # Don't boot with headless mode
+  #   vb.gui = true
+  #
+  #   # Use VBoxManage to customize the VM. For example to change memory:
+  #   vb.customize ["modifyvm", :id, "--memory", "1024"]
+  # end
+  #
+  # View the documentation for the provider you're using for more
+  # information on available options.
+
+  # Enable provisioning with Puppet stand alone.  Puppet manifests
+  # are contained in a directory path relative to this Vagrantfile.
+  # You will need to create the manifests directory and a manifest in
+  # the file vagrant-mapguide-ubuntu-precise32.pp in the manifests_path directory.
+  #
+  # An example Puppet manifest to provision the message of the day:
+  #
+  # # group { "puppet":
+  # #   ensure => "present",
+  # # }
+  # #
+  # # File { owner => 0, group => 0, mode => 0644 }
+  # #
+  # # file { '/etc/motd':
+  # #   content => "Welcome to your Vagrant-built virtual machine!
+  # #               Managed by Puppet.\n"
+  # # }
+  #
+  # config.vm.provision :puppet do |puppet|
+  #   puppet.manifests_path = "manifests"
+  #   puppet.manifest_file  = "site.pp"
+  # end
+
+  # Enable provisioning with chef solo, specifying a cookbooks path, roles
+  # path, and data_bags path (all relative to this Vagrantfile), and adding
+  # some recipes and/or roles.
+  #
+  # config.vm.provision :chef_solo do |chef|
+  #   chef.cookbooks_path = "../my-recipes/cookbooks"
+  #   chef.roles_path = "../my-recipes/roles"
+  #   chef.data_bags_path = "../my-recipes/data_bags"
+  #   chef.add_recipe "mysql"
+  #   chef.add_role "web"
+  #
+  #   # You may also specify custom JSON attributes:
+  #   chef.json = { :mysql_password => "foo" }
+  # end
+
+  # Enable provisioning with chef server, specifying the chef server URL,
+  # and the path to the validation key (relative to this Vagrantfile).
+  #
+  # The Opscode Platform uses HTTPS. Substitute your organization for
+  # ORGNAME in the URL and validation key.
+  #
+  # If you have your own Chef Server, use the appropriate URL, which may be
+  # HTTP instead of HTTPS depending on your configuration. Also change the
+  # validation key to validation.pem.
+  #
+  # config.vm.provision :chef_client do |chef|
+  #   chef.chef_server_url = "https://api.opscode.com/organizations/ORGNAME"
+  #   chef.validation_key_path = "ORGNAME-validator.pem"
+  # end
+  #
+  # If you're using the Opscode platform, your validator client is
+  # ORGNAME-validator, replacing ORGNAME with your organization name.
+  #
+  # If you have your own Chef Server, the default validation client name is
+  # chef-validator, unless you changed the configuration.
+  #
+  #   chef.validation_client_name = "ORGNAME-validator"
+  
+  config.vm.provision "shell",
+    privileged: false,
+    path: "provision.sh",
+    args: ["#{ENV['DOWNLOAD_HOST']}", "#{ENV['MG_DIST_DIR']}"]
+end

Added: branches/2.6/vagrant/ubuntu/test_x86/provision.sh
===================================================================
--- branches/2.6/vagrant/ubuntu/test_x86/provision.sh	                        (rev 0)
+++ branches/2.6/vagrant/ubuntu/test_x86/provision.sh	2015-07-27 12:26:06 UTC (rev 8719)
@@ -0,0 +1,16 @@
+#!/bin/bash
+DOWNLOAD_HOST=$1
+URI_PART=$2
+DIST_DIR="ubuntu_x86"
+echo Download host is: $DOWNLOAD_HOST
+wget "http://$DOWNLOAD_HOST/$URI_PART/Sheboygan.mgp"
+wget "http://$DOWNLOAD_HOST/$URI_PART/smoke_test.sh"
+sudo mv Sheboygan.mgp /tmp/
+wget "http://$DOWNLOAD_HOST/$URI_PART/$DIST_DIR/mginstallubuntu.sh"
+sed -i 's/URL="$URL_ROOT\/$URL_PART"/URL="http:\/\/'"$DOWNLOAD_HOST"'\/'"$URI_PART"'\/'"$DIST_DIR"'"/g' mginstallubuntu.sh
+chmod +x smoke_test.sh
+chmod +x mginstallubuntu.sh
+sudo ./mginstallubuntu.sh --headless --with-sdf --with-shp --with-ogr --with-gdal --with-sqlite
+echo Wait 10s before running smoke test
+sleep 10s
+sudo ./smoke_test.sh
\ No newline at end of file

Modified: branches/2.6/vagrant/ubuntu/x64/Vagrantfile
===================================================================
--- branches/2.6/vagrant/ubuntu/x64/Vagrantfile	2015-07-27 12:14:02 UTC (rev 8718)
+++ branches/2.6/vagrant/ubuntu/x64/Vagrantfile	2015-07-27 12:26:06 UTC (rev 8719)
@@ -10,7 +10,7 @@
   # please see the online documentation at vagrantup.com.
 
   # Every Vagrant virtual environment requires a box to build off of.
-  config.vm.box = "vagrant-precise64"
+  config.vm.box = "ubuntu12-amd64"
 
   # The url from where the 'config.vm.box' box will be fetched if it
   # doesn't already exist on the user's system.
@@ -140,14 +140,14 @@
 HAVE_FDO=0
 HAVE_FDO_LIBS=0
 HAVE_MAPGUIDE=0
-MG_UNIT_TEST=1
-FDO_UNIT_TEST=1
+MG_UNIT_TEST=0
+FDO_UNIT_TEST=0
 SCRIPT_ROOT=~/scripts
 FDO_SRC_ROOT=~/fdo/branches
 FDO_VER_MM=3.9
 FDO_VER_FULL=${FDO_VER_MM}.0
 MG_VER_MM=2.6
-MG_VER_FULL=${MG_VER_MM}.0
+MG_VER_FULL=${MG_VER_MM}.1
 FDO_SRC_DIR=3.9
 FDO_SRC=$FDO_SRC_ROOT/$FDO_SRC_DIR
 FDO_LIB_SRC=~/fdo_rdbms_thirdparty
@@ -155,6 +155,8 @@
 MG_SRC=$MG_SRC_ROOT/MgDev
 FDO_TARBALL=fdo-checkout-3.9.tar.gz
 MG_TARBALL=mapguide-checkout-2.6.tar.gz
+FDO_INST_PATH=/usr/local/fdo-${FDO_VER_FULL}
+MG_INST_PATH=/usr/local/mapguideopensource-${MG_VER_FULL}
 
 HAVE_FDO_SDK=0
 FDO_SDK_PKG_PATH=~/fdosdk
@@ -196,8 +198,6 @@
     sudo mkdir -p /usr/include/asm
     sudo cp /mapguide_sources/atomic.h /usr/include/asm
 fi
-#echo [provision]: Checking libraries
-#sudo apt-get install -y libpq-dev libmysqlclient-dev
 echo [provision]: Clean line endings
 sudo dos2unix /vagrant/*.sh
 sudo dos2unix /vagrant/*.pl
@@ -247,23 +247,6 @@
 fi
 if [ $HAVE_FDO_SDK -eq 0 ];
 then
-    echo [provision]: svn update FDO
-    BUILD_COMPONENT="svn update FDO"
-    # Only for Ubuntu 14.04 VM, svn is 1.8 so we have to upgrade the WC first before it can be updated
-    #svn upgrade $FDO_SRC
-    svn update $FDO_SRC
-    check_build
-else
-    echo [provision]: Using FDO SDK. No svn update of source required.
-fi
-echo [provision]: svn update MapGuide
-BUILD_COMPONENT="svn update MapGuide"
-# Only for Ubuntu 14.04 VM, svn is 1.8 so we have to upgrade the WC first before it can be updated
-#svn upgrade $MG_SRC
-svn update $MG_SRC
-check_build
-if [ $HAVE_FDO_SDK -eq 0 ];
-then
     if [ -d /mapguide_sources/patches/fdo ];
     then
         echo [provision]: Applying FDO source patches
@@ -304,31 +287,40 @@
 > ~/unit_test_status.log
 if [ $FDO_UNIT_TEST -eq 1 ];
 then
-    export NLSPATH=/usr/local/fdo-${FDO_VER_FULL}/nls/%N
     echo [provision]: Unit test FDO
     BUILD_COMPONENT="Unit Test FDO Core"
     cd $SCRIPT_ROOT/fdo_build_area/Fdo/UnitTest
-    sudo -E ./UnitTest 2>&1 | tee ~/fdo_core_unit_test.log
+    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee ~/fdo_core_unit_test.log
     check_test
     BUILD_COMPONENT="Unit Test SHP Provider"
     cd $SCRIPT_ROOT/fdo_build_area/Providers/SHP/Src/UnitTest
-    sudo -E ./UnitTest 2>&1 | tee ~/fdo_shp_unit_test.log
+    sudo rm providers.xml
+    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee ~/fdo_shp_unit_test.log
     check_test
     BUILD_COMPONENT="Unit Test SDF Provider"
     cd $SCRIPT_ROOT/fdo_build_area/Providers/SDF/Src/UnitTest
-    sudo -E ./UnitTest 2>&1 | tee ~/fdo_sdf_unit_test.log
+    sudo rm providers.xml
+    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee ~/fdo_sdf_unit_test.log
     check_test
     BUILD_COMPONENT="Unit Test SQLite Provider"
     cd $SCRIPT_ROOT/fdo_build_area/Providers/SQLite/Src/UnitTest
-    sudo -E ./UnitTest 2>&1 | tee ~/fdo_sqlite_unit_test.log
+    sudo rm providers.xml
+    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee ~/fdo_sqlite_unit_test.log
     check_test
     BUILD_COMPONENT="Unit Test GDAL Provider"
     cd $SCRIPT_ROOT/fdo_build_area/Providers/GDAL/Src/UnitTest
-    sudo -E ./UnitTest 2>&1 | tee ~/fdo_gdal_unit_test.log
+    sudo rm providers.xml
+    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee ~/fdo_gdal_unit_test.log
     check_test
+    BUILD_COMPONENT="Unit Test OGR Provider"
+    cd $SCRIPT_ROOT/fdo_build_area/Providers/OGR/Src/UnitTest
+    sudo rm providers.xml
+    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee ~/fdo_ogr_unit_test.log
+    check_test
     BUILD_COMPONENT="Unit Test WMS Provider"
     cd $SCRIPT_ROOT/fdo_build_area/Providers/WMS/Src/UnitTest
-    sudo -E ./UnitTest 2>&1 | tee ~/fdo_wms_unit_test.log
+    sudo rm providers.xml
+    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee ~/fdo_wms_unit_test.log
     check_test
 fi
 if [ $MG_UNIT_TEST -eq 1 ];
@@ -346,7 +338,7 @@
     cd $SCRIPT_ROOT/mgdev/Server/src/Core
     sudo make unittest.sh
     # Run the test suites individually except for TileService for reasons already stated
-    for comp in CoordinateSystem FeatureService Geometry KmlService LogManager MdfModel Misc RenderingService ServerAdminService ServerManager ServiceManager SiteManager SiteService ProfilingService TransformMesh
+    for comp in CoordinateSystem FeatureService Geometry KmlService LogManager MappingService MdfModel Misc Performance RenderingService ServerAdminService ServerManager ServiceManager SiteManager SiteService ProfilingService TransformMesh
     do
         sudo -E ./mgserver test $comp UnitTestResults_${comp}.xml 2>&1 | tee ~/mapguide_${comp}_unit_test.log
         check_test
@@ -354,6 +346,8 @@
             sudo mv UnitTestResults_${comp}.xml ~/UnitTestResults_${comp}.xml
         fi
     done
+    cd $SCRIPT_ROOT/mgdev
+    sudo -E ./run_tests.sh --prefix ${MG_INST_PATH} --with-php --with-java --logpath ~
 fi
 cd $SCRIPT_ROOT
 sudo mkdir -p /vagrant/build
@@ -368,26 +362,12 @@
 sudo cp bin/*.deb /vagrant/build
 sudo cp ~/UnitTestResults_*.xml /vagrant/build
 sudo cp /vagrant/mginstallubuntu.sh /vagrant/build/mginstallubuntu.sh
+sudo cp /vagrant/mguninstallubuntu.sh /vagrant/build/mguninstallubuntu.sh
+sudo sed -i 's/URL_PART="ubuntu12"/URL_PART="ubuntu_x64"/g' /vagrant/build/mginstallubuntu.sh
 sudo sed -i 's/FDOBUILD=0/FDOBUILD='"$FDO_REV"'/g' /vagrant/build/mginstallubuntu.sh
 sudo sed -i 's/MGBUILD=0/MGBUILD='"$MG_REV"'/g' /vagrant/build/mginstallubuntu.sh
-# Do not update the working copy tarballs. Ubuntu 14.04 uses svn 1.8 which will break
-# the working copy if copied over to a CentOS VM (which is still on 1.6)
-#
-# If anyone is doing to do the working copy update, it will be the CentOS VM
-#
-#if [ ! -d /mapguide_sources/updated ]; then
-#    sudo mkdir -p /mapguide_sources/updated
-#    cd $MG_SRC_ROOT
-#    echo [provision]: Updating mapguide source tarball
-#    tar -zcf $MG_TARBALL MgDev
-#    sudo mv $MG_TARBALL /mapguide_sources/updated
-#    cd $FDO_SRC_ROOT
-#    echo [provision]: Updating fdo source tarball
-#    tar -zcf $FDO_TARBALL $FDO_SRC_DIR
-#    sudo mv $FDO_TARBALL /mapguide_sources/updated
-#else
-#    echo [provision]: Updated tarballs already exist. Doing nothing
-#fi
+sudo sed -i 's/FDOARCH=i386/FDOARCH=amd64/g' /vagrant/build/mginstallubuntu.sh
+sudo sed -i 's/MGARCH=i386/MGARCH=amd64/g' /vagrant/build/mginstallubuntu.sh
 echo [provision]: Build complete
 SCRIPT
   

Modified: branches/2.6/vagrant/ubuntu/x86/Vagrantfile
===================================================================
--- branches/2.6/vagrant/ubuntu/x86/Vagrantfile	2015-07-27 12:14:02 UTC (rev 8718)
+++ branches/2.6/vagrant/ubuntu/x86/Vagrantfile	2015-07-27 12:26:06 UTC (rev 8719)
@@ -10,7 +10,7 @@
   # please see the online documentation at vagrantup.com.
 
   # Every Vagrant virtual environment requires a box to build off of.
-  config.vm.box = "vagrant-precise32"
+  config.vm.box = "ubuntu12-i386"
 
   # The url from where the 'config.vm.box' box will be fetched if it
   # doesn't already exist on the user's system.
@@ -140,14 +140,14 @@
 HAVE_FDO=0
 HAVE_FDO_LIBS=0
 HAVE_MAPGUIDE=0
-MG_UNIT_TEST=1
-FDO_UNIT_TEST=1
+MG_UNIT_TEST=0
+FDO_UNIT_TEST=0
 SCRIPT_ROOT=~/scripts
 FDO_SRC_ROOT=~/fdo/branches
 FDO_VER_MM=3.9
 FDO_VER_FULL=${FDO_VER_MM}.0
 MG_VER_MM=2.6
-MG_VER_FULL=${MG_VER_MM}.0
+MG_VER_FULL=${MG_VER_MM}.1
 FDO_SRC_DIR=3.9
 FDO_SRC=$FDO_SRC_ROOT/$FDO_SRC_DIR
 FDO_LIB_SRC=~/fdo_rdbms_thirdparty
@@ -155,7 +155,8 @@
 MG_SRC=$MG_SRC_ROOT/MgDev
 FDO_TARBALL=fdo-checkout-3.9.tar.gz
 MG_TARBALL=mapguide-checkout-2.6.tar.gz
-
+FDO_INST_PATH=/usr/local/fdo-${FDO_VER_FULL}
+MG_INST_PATH=/usr/local/mapguideopensource-${MG_VER_FULL}
 HAVE_FDO_SDK=0
 FDO_SDK_PKG_PATH=~/fdosdk
 FDO_SDK_TARBALL=
@@ -196,8 +197,6 @@
     sudo mkdir -p /usr/include/asm
     sudo cp /mapguide_sources/atomic.h /usr/include/asm
 fi
-#echo [provision]: Checking libraries
-#sudo apt-get install -y libpq-dev libmysqlclient-dev
 echo [provision]: Clean line endings
 sudo dos2unix /vagrant/*.sh
 sudo dos2unix /vagrant/*.pl
@@ -247,23 +246,6 @@
 fi
 if [ $HAVE_FDO_SDK -eq 0 ];
 then
-    echo [provision]: svn update FDO
-    BUILD_COMPONENT="svn update FDO"
-    # Only for Ubuntu 14.04 VM, svn is 1.8 so we have to upgrade the WC first before it can be updated
-    #svn upgrade $FDO_SRC
-    svn update $FDO_SRC
-    check_build
-else
-    echo [provision]: Using FDO SDK. No svn update of source required.
-fi
-echo [provision]: svn update MapGuide
-BUILD_COMPONENT="svn update MapGuide"
-# Only for Ubuntu 14.04 VM, svn is 1.8 so we have to upgrade the WC first before it can be updated
-#svn upgrade $MG_SRC
-svn update $MG_SRC
-check_build
-if [ $HAVE_FDO_SDK -eq 0 ];
-then
     if [ -d /mapguide_sources/patches/fdo ];
     then
         echo [provision]: Applying FDO source patches
@@ -304,31 +286,40 @@
 > ~/unit_test_status.log
 if [ $FDO_UNIT_TEST -eq 1 ];
 then
-    export NLSPATH=/usr/local/fdo-${FDO_VER_FULL}/nls/%N
     echo [provision]: Unit test FDO
     BUILD_COMPONENT="Unit Test FDO Core"
     cd $SCRIPT_ROOT/fdo_build_area/Fdo/UnitTest
-    sudo -E ./UnitTest 2>&1 | tee ~/fdo_core_unit_test.log
+    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee ~/fdo_core_unit_test.log
     check_test
     BUILD_COMPONENT="Unit Test SHP Provider"
     cd $SCRIPT_ROOT/fdo_build_area/Providers/SHP/Src/UnitTest
-    sudo -E ./UnitTest 2>&1 | tee ~/fdo_shp_unit_test.log
+    sudo rm providers.xml
+    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee ~/fdo_shp_unit_test.log
     check_test
     BUILD_COMPONENT="Unit Test SDF Provider"
     cd $SCRIPT_ROOT/fdo_build_area/Providers/SDF/Src/UnitTest
-    sudo -E ./UnitTest 2>&1 | tee ~/fdo_sdf_unit_test.log
+    sudo rm providers.xml
+    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee ~/fdo_sdf_unit_test.log
     check_test
     BUILD_COMPONENT="Unit Test SQLite Provider"
     cd $SCRIPT_ROOT/fdo_build_area/Providers/SQLite/Src/UnitTest
-    sudo -E ./UnitTest 2>&1 | tee ~/fdo_sqlite_unit_test.log
+    sudo rm providers.xml
+    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee ~/fdo_sqlite_unit_test.log
     check_test
     BUILD_COMPONENT="Unit Test GDAL Provider"
     cd $SCRIPT_ROOT/fdo_build_area/Providers/GDAL/Src/UnitTest
-    sudo -E ./UnitTest 2>&1 | tee ~/fdo_gdal_unit_test.log
+    sudo rm providers.xml
+    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee ~/fdo_gdal_unit_test.log
     check_test
+    BUILD_COMPONENT="Unit Test OGR Provider"
+    cd $SCRIPT_ROOT/fdo_build_area/Providers/OGR/Src/UnitTest
+    sudo rm providers.xml
+    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee ~/fdo_ogr_unit_test.log
+    check_test
     BUILD_COMPONENT="Unit Test WMS Provider"
     cd $SCRIPT_ROOT/fdo_build_area/Providers/WMS/Src/UnitTest
-    sudo -E ./UnitTest 2>&1 | tee ~/fdo_wms_unit_test.log
+    sudo rm providers.xml
+    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee ~/fdo_wms_unit_test.log
     check_test
 fi
 if [ $MG_UNIT_TEST -eq 1 ];
@@ -346,7 +337,7 @@
     cd $SCRIPT_ROOT/mgdev/Server/src/Core
     sudo make unittest.sh
     # Run the test suites individually except for TileService for reasons already stated
-    for comp in CoordinateSystem FeatureService Geometry KmlService LogManager MdfModel Misc RenderingService ServerAdminService ServerManager ServiceManager SiteManager SiteService ProfilingService TransformMesh
+    for comp in CoordinateSystem FeatureService Geometry KmlService LogManager MappingService MdfModel Misc Performance RenderingService ServerAdminService ServerManager ServiceManager SiteManager SiteService ProfilingService TransformMesh
     do
         sudo -E ./mgserver test $comp UnitTestResults_${comp}.xml 2>&1 | tee ~/mapguide_${comp}_unit_test.log
         check_test
@@ -354,6 +345,8 @@
             sudo mv UnitTestResults_${comp}.xml ~/UnitTestResults_${comp}.xml
         fi
     done
+    cd $SCRIPT_ROOT/mgdev
+    sudo -E ./run_tests.sh --prefix ${MG_INST_PATH} --with-php --with-java --logpath ~
 fi
 cd $SCRIPT_ROOT
 sudo mkdir -p /vagrant/build
@@ -367,27 +360,11 @@
 fi
 sudo cp bin/*.deb /vagrant/build
 sudo cp ~/UnitTestResults_*.xml /vagrant/build
+sudo sed -i 's/URL_PART="ubuntu12"/URL_PART="ubuntu_x86"/g' /vagrant/build/mginstallubuntu.sh
 sudo cp /vagrant/mginstallubuntu.sh /vagrant/build/mginstallubuntu.sh
+sudo cp /vagrant/mguninstallubuntu.sh /vagrant/build/mguninstallubuntu.sh
 sudo sed -i 's/FDOBUILD=0/FDOBUILD='"$FDO_REV"'/g' /vagrant/build/mginstallubuntu.sh
 sudo sed -i 's/MGBUILD=0/MGBUILD='"$MG_REV"'/g' /vagrant/build/mginstallubuntu.sh
-# Do not update the working copy tarballs. Ubuntu 14.04 uses svn 1.8 which will break
-# the working copy if copied over to a CentOS VM (which is still on 1.6)
-#
-# If anyone is doing to do the working copy update, it will be the CentOS VM
-#
-#if [ ! -d /mapguide_sources/updated ]; then
-#    sudo mkdir -p /mapguide_sources/updated
-#    cd $MG_SRC_ROOT
-#    echo [provision]: Updating mapguide source tarball
-#    tar -zcf $MG_TARBALL MgDev
-#    sudo mv $MG_TARBALL /mapguide_sources/updated
-#    cd $FDO_SRC_ROOT
-#    echo [provision]: Updating fdo source tarball
-#    tar -zcf $FDO_TARBALL $FDO_SRC_DIR
-#    sudo mv $FDO_TARBALL /mapguide_sources/updated
-#else
-#    echo [provision]: Updated tarballs already exist. Doing nothing
-#fi
 echo [provision]: Build complete
 SCRIPT
   

Added: branches/2.6/vagrant/verify.bat
===================================================================
--- branches/2.6/vagrant/verify.bat	                        (rev 0)
+++ branches/2.6/vagrant/verify.bat	2015-07-27 12:26:06 UTC (rev 8719)
@@ -0,0 +1,95 @@
+ at echo off
+
+rem build.bat
+rem
+rem Performs basic smoke tests of CentOS and Ubuntu builds. 
+rem
+rem A basic web server is set up to serve files from the build artifact output directory
+rem
+rem With that set up, the following smoke tests are performed
+rem
+rem  1. CentOS/Ubuntu install scripts with sed'd URLs will properly download and install the required packages
+rem  2. The httpd and MapGuide Servers are verified to be running and operational by the basic smoke test shell script
+rem
+rem Requires the sed utility, which is part of GNU on Windows (https://github.com/bmatzelle/gow)
+
+IF "%DOWNLOAD_HOST%"=="" SET DOWNLOAD_HOST=192.168.0.6
+IF "%MG_DIST_DIR%"=="" SET MG_DIST_DIR=builds30
+IF "%VERIFY_UBUNTU_32%"=="" SET VERIFY_UBUNTU_32=1
+IF "%VERIFY_UBUNTU_64%"=="" SET VERIFY_UBUNTU_64=1
+IF "%VERIFY_CENTOS_32%"=="" SET VERIFY_CENTOS_32=1
+IF "%VERIFY_CENTOS_64%"=="" SET VERIFY_CENTOS_64=1
+
+echo **************** Verify Summary *********************
+echo Download Host is: %DOWNLOAD_HOST%
+echo Dist directory name: %MG_DIST_DIR%
+echo Verifying Ubuntu (32-bit): %VERIFY_UBUNTU_32%
+echo Verifying Ubuntu (64-bit): %VERIFY_UBUNTU_64%
+echo Verifying CentOS (32-bit): %VERIFY_CENTOS_32%
+echo Verifying CentOS (64-bit): %VERIFY_CENTOS_64%
+echo ****************************************************
+:check_centos_32
+echo [build]: Checking if we're verifying CentOS 32-bit
+if %VERIFY_CENTOS_32% == 1 goto test_centos_32
+goto check_ubuntu_32
+:test_centos_32
+pushd centos\test_x86
+SET COMPONENT=CentOS Build 32-bit
+echo [build]: MapGuide CentOS build 32-bit
+call vagrant up 2>&1 | tee smoke_test.log
+echo [build]: vagrant returned %errorlevel%
+if "%errorlevel%"=="1" goto error
+:destroy_centos_32
+call vagrant destroy -f
+:centos_32_done
+popd
+:check_ubuntu_32
+echo [build]: Checking if we're verifying Ubuntu 32-bit
+if %VERIFY_UBUNTU_32% == 1 goto test_ubuntu_32
+goto check_centos_64
+:test_ubuntu_32
+pushd ubuntu\test_x86
+SET COMPONENT=Ubuntu Build 32-bit
+echo [build]: MapGuide Ubuntu build 32-bit
+call vagrant up 2>&1 | tee smoke_test.log
+echo [build]: vagrant returned %errorlevel%
+if "%errorlevel%"=="1" goto error
+:destroy_ubuntu_32
+call vagrant destroy -f
+:ubuntu_32_done
+popd
+:check_centos_64
+echo [build]: Checking if we're verifying CentOS 64-bit
+if %VERIFY_CENTOS_64% == 1 goto test_centos_64
+goto check_ubuntu_64
+:test_centos_64
+pushd centos\test_x64
+SET COMPONENT=CentOS Build 64-bit
+echo [build]: MapGuide CentOS build 64-bit
+call vagrant up 2>&1 | tee smoke_test.log
+echo [build]: vagrant returned %errorlevel%
+if "%errorlevel%"=="1" goto error
+:destroy_centos_64
+call vagrant destroy -f
+:centos_64_done
+popd
+:check_ubuntu_64
+echo [build]: Checking if we're verifying Ubuntu 64-bit
+if %VERIFY_UBUNTU_64% == 1 goto test_ubuntu_64
+goto quit
+:test_ubuntu_64
+pushd ubuntu\test_x64
+SET COMPONENT=Ubuntu Build 64-bit
+echo [build]: MapGuide Ubuntu build 64-bit
+call vagrant up 2>&1 | tee smoke_test.log
+echo [build]: vagrant returned %errorlevel%
+if "%errorlevel%"=="1" goto error
+:destroy_ubuntu_64
+call vagrant destroy -f
+:ubuntu_64_done
+popd
+goto quit
+:error
+echo [ERROR]: There was an error building the component %COMPONENT%
+exit /B 1
+:quit
\ No newline at end of file



More information about the mapguide-commits mailing list