#Glazier - automating building CouchDB on Windows #############################

Glazier is a set of scripts designed to help automate as much as practicable the
build of CouchDB on Windows, from XP/2003 to Windows 7 or Server 2008. It
assumes you're starting from a vanilla state.

# Using Glazier  ##############################################################

Glazier requires 5 things to run successfully
1. you are logged in as a local user "couchdb" which has admin permissions
2. Windows XP, 2003, Vista, Windows 7 or 2008, either 32 or 64-bit platforms
3. internet connectivity
4. approx 12GiB of disk space during fetch & build stages
5. download and unzipped [glazier latest zip](http://github.com/dch/glazier/zipball/master)

6. an optional environment variable, `%RELAX%`, set to where you wish to have CouchDB
 and Erlang built within. If none is selected, `c:\relax` will be used.


## Current State ##############################################################

* The steps below, manually or automated, should produce a working CouchDB build & self-installing .exe from
	Erlang/OTP  R14A, and CouchDB 0.11.2 or 1.0.1. 
* The build environment should be fully functional on both 32,64, desktop and
	server versions of windows from XP/2003 onwards
* Fetching binaries is described and automated
* Installation of development environment is described and automated
* Downloads are not small -
	[get_bits.cmd](http://github.com/dch/glazier/blob/master/bin/get_bits.cmd)
	retrieves approx 7GiB of DVD ISOs for Microsoft's Visual Studio 2008
	compiler, related SDKs, the smaller cygwin and mozilla build frameworks,
	source and misc tools
* Glazier tries to be self-contained so that it is both repeatable and also
	easy to clean up.
* Compilation stages are not yet automated but are all now command-line driven

# Running Automatically #######################################################

* run `%GLAZIER%\bin\glaze.cmd` to fetch & cache the bits, install compiilers
* you will need to select the cygwin modules individually 
* close any open command prompts or shells
* run `%GLAZIER%\bin\relax.cmd` to start a valid build environment
* select the erlang version you wish to build from
* the first time around you will need to unpack your erlang and couchdb tarballs

        cd /relax
        tar xzf /relax/bits/apache-couchdb-0.11.2.tar.gz &        
        tar xzf /relax/bits/apache-couchdb-1.0.1.tar.gz &        
        tar xzf /relax/bits/curl-7.21.1.tar.gz &        
        tar xzf /relax/bits/otp_src_R13B04.tar.gz &        
        tar xzf /relax/bits/otp_src_R14A.tar.gz &
        cd /relax/otp_src_R13B04; tar xzf /relax/bits/tcltk85_win32_bin.tar.gz &
        cd /relax/otp_src_R14A;   tar xzf /relax/bits/tcltk85_win32_bin.tar.gz &

`TODO // confirm steps needed before getting to here. Use manual install first`

* then run the following 4 scripts in order
        
        erl_build.sh
        erl_config.sh
        couchdb_build.sh
        couchdb_config.sh
        
* each of these scripts leaves logfiles in the root folder. If you have issues
	during compilation phase, load these onto <http://friendpaste.com/>
	don't email them to the mailing list

# Installing the Build Environment ############################################

* Building Erlang & CouchDB on Windows requires a custom build environment,
	which is very sensitive to path order amongst the three different 
	compilers used to build wxWidgets, erlang, javascript, and couchdb
* Each component is built via standard Makefiles in the Cygwin unix/posix
	emulation layer, and then handed over to the appropriate compiler.
* This is further complicated by different install locations on 32 vs 64 bit
	windows versions, and which Microsoft C compiler and Windows SDKs
	installed.

## Cygwin #####################################################################

The full Cygwin install comprises several GiB of data. Run [cygwin]'s setup.exe
using defaults, optionally installing all components if you have the
bandwidth, or alternatively with the following additional modules at a
minimum:

* devel: ALL
* editors: vim
* utils: file

After install, set up a link to where you plan to install related binaries,
build erlang, and couchdb. I am using `C:\relax` so:

		setx RELAX c:\relax
		mkdir %RELAX%
		junction.exe c:\cygwin\relax %RELAX%

## Mozilla Build ##############################################################

The mozilla build toolchain is needed solely for building a javascript engine.

* Download it from [mozbuild] and install per defaults

## Microsoft Visual C++ #######################################################

* Erlang and CouchDB can be built using the free VS2008 Express C++ edition
	from [MSDN](http://msdn.microsoft.com/en-gb/vstudio/)
* install Visual C++ 9 only, to the default locations, using the DVD ISO
	[msvc++] excluding optional MSSSQL & Silverlight, or alternatively the
	web installer [vsmc++webstart]

## Windows 7 SDK ##############################################################

* The windows 7 SDK is required, as the free VS2008 install is missing the
	message compiler. Download one of the following version per your
	requirements & install
* [win7sdk_32bit]
* [win7sdk_64bit]

# Supporting Tools ############################################################

Both CouchDB and Erlang have dependencies on other opensource tools.

## OpenSSL ####################################################################

* use the 32-bit version even if you are using a 64-bit OS
* download [openssl_bits] and install to `c:\openssl`

## Innosoft Installer #########################################################

* download the installer [inno_bits] and install to `c:\relax\inno5`

## NSIS Installer #############################################################

* download the installer [nsis_bits] and install to `c:\relax\nsis`

## Microsoft Visual C++ runtime ###############################################

* download the runtime installer [vcredist] and copy to `c:\relax\`

## set up hard links ##########################################################

* to keep our paths clean later, and largely independent of compiler
	installations if you have pre-existing ones, start a new cmd.exe
	prompt	with a fresh environment
* this should have both VS90ComnTools and ProgramFiles environment vars
	defined from the previous install of Visual Studio
* setup the following hard links (junction points), using either the included
	mklink tool (Windows 7 and later), or SysInternal's
	[junction](http://live.sysinternals.com/junction.exe)

        junction c:\relax\openssl c:\openssl
        junction c:\relax\vs90 "%VS90COMNTOOLS%\..\.."
        junction c:\relax\SDKs "%programfiles%\Microsoft SDKs\Windows"

or using mklink.exe

        mklink /j c:\relax\openssl c:\openssl
	[etc...]

# Building pre-requisites for Erlang ##########################################

## wxWidgets ##################################################################

* two components are used for building Erlang's graphical shell, `werl.exe`
	on windows
* download [wxwidgets_bits] from [WxWidgets website](http://wxwidgets.org/)
	& unzip using cygwin into /relax/
* the Erlang build expects to see wxWidgets in /opt/local/pgm/wxWidgets-2.8.11
	by default

        mkdir c:\cygwin\opt\local\pgm
        junction c:\cygwin\opt\local\pgm\wxWidgets-2.8.11 c:\relax\wxMSW-2.8.11

* Using a suitable editor (vi in the cygwin suite, or install
	[notepadplus_bits] for windows users) and
* Edit `c:\relax\wxMSW-2.8.11\include\wx\msw\setup.h` to enable
	`wxUSE_GLCANVAS, wxUSE_POSTSCRIPT` and `wxUSE_GRAPHICS_CONTEXT`

### wx.dsw ####################################################################

* open VSC++ & the project  `C:\relax\wxMSW-2.8.11\build\msw\wx.dsw`,
	accepting the automatic conversion to the newer VC++ format and save
	as `\relax\wxMSW-2.8.11\build\msw\wx.sln`
* right-click on the project, and set up the dependencies for wx.dsw to
	achieve the below build order
`jpeg, png, tiff, zlib, regex, expat, base, net, odbc, core,
 gl, html, media, qa, adv, dbgrid, xrc, aui, richtext, xml`
* Launch a new prompt from somewhere like Start -> Programs -> Microsoft
	Visual C++ -> Visual Studio Tools -> VS2008 Cmd Prompt
* Then build all unicode release (and unicode debug) packages:

        pushd %RELAX%\wxMSW*\build\msw
        vcbuild /useenv  /platform:Win32 /M4 wx.sln "Unicode Release|Win32"
        vcbuild /useenv  /platform:Win32 /M4 wx.sln "Unicode Debug|Win32"

### stc.dsw ###################################################################

* open VSC++ & convert `%RELAX%\wxMSW-2.8.11\contrib\build\stc\stc.dsw`
	to `%RELAX%\wxMSW-2.8.11\contrib\build\stc\stc.sln`

        pushd %RELAX%\wxMSW*\contrib\build\stc
        set LIB=%LIB%;..\..\..\include..\..\..\lib\vc_lib\mswd
        set LIBPATH=%LIBPATH%;..\..\..\lib\vc_lib
        vcbuild /useenv /platform:Win32 /M4 stc.sln "Unicode Release|Win32"
        vcbuild /useenv /platform:Win32 /M4 stc.sln "Unicode Debug|Win32"


# Building Erlang #############################################################

* after installing VC++ 2008 Express, and most other Visual Studio solutions,
	`call "%vs90comntools%\..\..\vc\vcvarsall.bat" x86` will automatically
	set up our 32-bit build environment correctly, independently if
	you have installed on 32 or 64bit windows, with the exception of the
	Windows v7.0 SDK.
	
* in a cmd.exe shell
      
        junction.exe %RELAX%\bin %GLAZIER%\bin
        junction.exe %RELAX%\bits %GLAZIER%\bits
        mkdir %RELAX%\release
  
* in a cygwin shell, using these new junction points:

        cd /relax
        tar xzf /relax/bits/otp_src_R14A.tar.gz &
        tar xzf /relax/bits/otp_src_R13B04.tar.gz &

* then run `%GLAZIER%\bin\relax.cmd`

## Tk/Tcl #####################################################################

* optional components

        cd $ERL_TOP && tar xvzf /relax/bits/tcltk85_win32_bin.tar.gz
        # or simply
        cd /relax/otp_src_R14A && tar xvzf /relax/bits/tcltk85_win32_bin.tar.gz
        cd /relax/otp_src_R13B04 && tar xvzf /relax/bits/tcltk85_win32_bin.tar.gz

* or skip the whole damn lot this way

		echo "skipping gs" > lib/gs/SKIP

* check that `which cl; which link; which mc` return the MS ones, if not then
 sort them out manually. Refer to
 [relax.cmd](http://github.com/dch/glazier/bin/relax.cmd) and
 [relax.sh](http://github.com/dch/glazier/bin/relax.sh)
 
* build Erlang using `/relax/glazier/bin/erl_config.sh` and
	`/relax/glazier/bin/erl_build.sh`, or manually as follows

		./otp_build autoconf
		./otp_build configure
		./otp_build boot -a
		./otp_build release -a
		./otp_build installer_win32
		# we need to set up erlang to run from this new source build to build CouchDB
		./release/win32/Install.exe -s
		
* More details are at [erlang INSTALL-Win32.md on github](http://github.com/erlang/otp/blob/dev/INSTALL-WIN32.md)

* or using the relax tools:

        start %glazier%\bin\relax.cmd
	[select erlang build]
	erl_config.sh; erl_build.sh


# CouchDB #####################################################################

CouchDB has been built & tested against the following components successfully

* Erlang OTP R13B04 or R14A including source
* ICU 4.2.1
* Win32 OpenSSL  1.0.0a
* Mozilla SpiderMonkey 1.8 from SeaMonkey 2.0.6
* libcurl 7.21.1

## Javascript #################################################################

The Javascript engine used by CouchDB is built from Seamonkey, using the
mozilla build toolkit.

* get [seamonkey_bits]
* run `c:\mozilla-build\start-msvc9.bat` even if you are on a 64-bit platform.

        cd /c/relax && mkdir seamonkey-2.0.6
        cd seamonkey-2.0.6
        tar xjf /d/glazier/bits/seamonkey-2.0.6.source.tar.bz2
        cd /c/relax/seamonkey-2.0.6/comm-1.9.1/mozilla/js/src
        autoconf-2.13
        ./configure
        make

* to install from -current do:
        cd /c/relax && mkdir seamonkey-current
        cd seamonkey-current
        hg clone http://hg.mozilla.org/mozilla-central
        cd mozilla-central/......./comm-1.9.1/mozilla/js/src
        autoconf-2.13
        ./configure
        make

## Inno Installer #############################################################

* Download from [inno_bits]
* Install to c:\relax\inno5 & ensure its in the path
* Install ispack-5.3.10-unicode.exe, optionally including additional components

## OpenSSL ####################################################################

* already installed into `C:/OpenSSL/` no further steps required

## LibCURL ####################################################################

* Extract from cygwin shell if not already done

        cd /relax && tar xf /relax/bits/curl-7*

* run from a cmd.exe shell:

        pushd %RELAX%\curl-7*
        set OPENSSL_PATH=c:\openssl
        set INCLUDE=%INCLUDE%;%OPENSSL_PATH%\include\openssl;
        set LIBPATH=%LIBPATH%;%OPENSSL_PATH%\lib;
        set LIB=%LIB%;%OPENSSL_PATH%\lib;

        vcbuild /useenv /upgrade /platform:Win32 lib\libcurl.vcproj
        vcbuild /useenv /platform:Win32 lib\libcurl.vcproj "Release|Win32"
        xcopy lib\Release\libcurl.lib lib\ /y /f
	popd

## ICU ########################################################################

* Download and unzip the compiled libraries from [icu_bits_curr]

		cd %RELAX%\
		curl -#LO 
		7z x bits\icu*.zip

## Make & Build ###############################################################

* The generic configure script looks like this:

        ./configure \
        --with-js-include=/cygdrive/c/path_to_seamonkey \
        --with-js-lib=/cygdrive/c/path_to_seamonkey_lib \
        --with-win32-icu-binaries=/cygdrive/c/path_to_icu_binaries_root \
        --with-erlang=$ERL_TOP/release/win32/usr/include \
        --with-win32-curl=/cygdrive/c/path/to/curl/root/directory \
        --with-openssl-bin-dir=/cygdrive/c/openssl/bin \
        --with-msvc-redist-dir=/cygdrive/c/dir/with/vcredist_platform_executable \
        --prefix=$ERL_TOP/release/win32

## using seamonkey 2.0.6 ######################################################

* This is the recommended config if you have used the above config:

        ./configure \
        --prefix=$ERL_TOP/release/win32 \
        --with-erlang=$ERL_TOP/release/win32/usr/include \
        --with-win32-icu-binaries=/relax/icu \
        --with-win32-curl=/relax/curl-7.21.1 \
        --with-openssl-bin-dir=/relax/openssl/bin \
        --with-msvc-redist-dir=/relax \
        --with-js-lib=/relax/seamonkey-2.0.6/comm-1.9.1/mozilla/js/src/dist/lib \
        --with-js-include=/relax/seamonkey-2.0.6/comm-1.9.1/mozilla/js/src/dist/include/js

CURL
[curl] -> win32-openssl [curl_bits]

# Automated Test Bed for Builds
The objective is to take the current manual steps, and have them automated for a successful build off a variety of representative Microsoft current OS using Amazon EC2 infrastructure.

## Tested AMIs

These are all sourced from [AWS Windows Servers] provided by Amazon. The release build is taken from the Windows 2008 64-bit AMI below. You will need to set up an AWS account before using the [AWS console] and we recommend using spot instances as these are significantly cheaper to run.

TODO // URLs don't go to right AMIs

* ami-c3e40daa | amazon/Windows-Server2008r1sp2-i386-Base-v103 ** bash.exe dumps core
* ami-d9e40db0 | amazon/Windows-Server2008r1sp2-x86_64-Base-v103 ** bash.exe and cmd.exe dumps core
* ami-f11ff098 | amazon/Windows-Server2003r2-i386-Base-v109 ** too bloody slow
* ami-f51ff09c | amazon/Windows-Server2003r2-x86_64-Base-v109

* NB both of the Win2008 ones above dump core while installing/running cygwin so we do not build by default
* reference CouchDB install is therefore Win2003r2 x86_64  ami-f51ff09c l1.large & snap-080bb263 for accompanying binaries
* reference CouchDB install is therefore Win2003r2 x86_i386  ami-f11ff098 c1.medium & snap-080bb263 for accompanying binaries

## Config of bundled W2008R1SP2 64b AMI

* attach a 30GiB EBS vol for storage of the bits
* logon, bring up an admin command prompt by right-clicking on any Command Prompt link and choosing "Run as Administrator"
* execute the following within that
* diskmgmt.msc -> find the newly attached volume & turn it online
* a fix for [SEHOP] security feature causing cygwin & similar unix shell emulations to dump core

        regedit d:\glazier\bundles\disable_sehop_kb956607.reg
        net user couchdb 1dot0 /add
        net localgroup administrators couchdb /add

* disable UAC -> control panel -> user accts -> turn UAC off -> restart later
* start menu -> server manager -> 2nd pane -> configure IE ESC
* disable [DEP] ->  bcdedit.exe /set {current} nx AlwaysOff

* restart now

********************************************************************************
# Appendices
********************************************************************************

## Licences

* the core tools & scripts used in glazier are released or included as BSD-style licence
* curl and the included openssl libraries are the only ones distributed with glazier
* the silent installation of each component assumes your implicit acceptance of the rest
* curl <http://curl.haxx.se/docs/copyright.html>
* openssl <http://www.openssl.org/source/license.html>

## sample environments on different windows platforms

### win7 std - default environment

    ALLUSERSPROFILE=C:\ProgramData
    APPDATA=C:\Users\couchdb\AppData\Roaming
    CLIENTNAME=continuity.muse
    CommonProgramFiles=C:\Program Files\Common Files
    CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
    CommonProgramW6432=C:\Program Files\Common Files
    COMPUTERNAME=BUILD
    ComSpec=C:\Windows\system32\cmd.exe
    FP_NO_HOST_CHECK=NO
    HOMEDRIVE=C:
    HOMEPATH=\Users\couchdb
    LOCALAPPDATA=C:\Users\couchdb\AppData\Local
    LOGONSERVER=\\BUILD
    NUMBER_OF_PROCESSORS=1
    OPENSSL_CONF=C:\OpenSSL\bin\openssl.cfg
    OS=Windows_NT
    Path=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\
    PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
    PROCESSOR_ARCHITECTURE=AMD64
    PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 15 Stepping 6, GenuineIntel
    PROCESSOR_LEVEL=6
    PROCESSOR_REVISION=0f06
    ProgramData=C:\ProgramData
    ProgramFiles=C:\Program Files
    ProgramFiles(x86)=C:\Program Files (x86)
    ProgramW6432=C:\Program Files
    PROMPT=$P$G
    PSModulePath=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\
    PUBLIC=C:\Users\Public
    SESSIONNAME=RDP-Tcp#0
    SystemDrive=C:
    SystemRoot=C:\Windows
    TEMP=C:\Users\couchdb\AppData\Local\Temp
    TMP=C:\Users\couchdb\AppData\Local\Temp
    USERDOMAIN=BUILD
    USERNAME=couchdb
    USERPROFILE=C:\Users\couchdb
    VS90COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools\
    windir=C:\Windows

### win7 std - vs2008 environment
    ALLUSERSPROFILE=C:\ProgramData
    APPDATA=C:\Users\couchdb\AppData\Roaming
    CLIENTNAME=continuity.muse
    CommonProgramFiles=C:\Program Files\Common Files
    CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
    CommonProgramW6432=C:\Program Files\Common Files
    COMPUTERNAME=BUILD
    ComSpec=C:\Windows\system32\cmd.exe
    DevEnvDir=C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE
    FP_NO_HOST_CHECK=NO
    FrameworkDir=C:\Windows\Microsoft.NET\Framework
    FrameworkVersion=v2.0.50727
    HOMEDRIVE=C:
    HOMEPATH=\Users\couchdb
    INCLUDE=C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\ATLMFC\INCLUDE;C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\INCLUDE;C:\Program Files\Microsoft SDKs\Windows\v6.0A\include;
    LIB=C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\ATLMFC\LIB;C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\LIB;C:\Program Files\Microsoft SDKs\Windows\v6.0A\lib;
    LIBPATH=C:\Windows\Microsoft.NET\Framework\;C:\Windows\Microsoft.NET\Framework\v2.0.50727;C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\ATLMFC\LIB;C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\LIB;
    LOCALAPPDATA=C:\Users\couchdb\AppData\Local
    LOGONSERVER=\\BUILD
    NUMBER_OF_PROCESSORS=1
    OPENSSL_CONF=C:\OpenSSL\bin\openssl.cfg
    OS=Windows_NT
    Path=C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE;C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\BIN;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools\bin;C:\Windows\Microsoft.NET\Framework\;C:\Windows\Microsoft.NET\Framework\\Microsoft .NET Framework 3.5 (Pre-Release Version);C:\Windows\Microsoft.NET\Framework\v2.0.50727;C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\VCPackages;C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\
    PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
    PROCESSOR_ARCHITECTURE=AMD64
    PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 15 Stepping 6, GenuineIntel
    PROCESSOR_LEVEL=6
    PROCESSOR_REVISION=0f06
    ProgramData=C:\ProgramData
    ProgramFiles=C:\Program Files
    ProgramFiles(x86)=C:\Program Files (x86)
    ProgramW6432=C:\Program Files
    PROMPT=$P$G
    PSModulePath=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\
    PUBLIC=C:\Users\Public
    SESSIONNAME=RDP-Tcp#0
    SystemDrive=C:
    SystemRoot=C:\Windows
    TEMP=C:\Users\couchdb\AppData\Local\Temp
    TMP=C:\Users\couchdb\AppData\Local\Temp
    USERDOMAIN=BUILD
    USERNAME=couchdb
    USERPROFILE=C:\Users\couchdb
    VCINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC
    VS90COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools\
    VSINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio 9.0
    windir=C:\Windows
    WindowsSdkDir=C:\Program Files\Microsoft SDKs\Windows\v6.0A\


### a perfect path for erlang R13B04 after eval `./otp_build env_win32`

    export PATH=$ERL_TOP/release/win32/erts-5.7.5/bin:\
    $ERL_TOP/erts/etc/win32/cygwin_tools/vc:\
    $ERL_TOP/erts/etc/win32/cygwin_tools:\
    /cygdrive/c/PROGRA~1/MICROS~1.0/Common7/IDE:\
    /cygdrive/c/PROGRA~1/MICROS~1.0/VC/BIN:\
    /cygdrive/c/PROGRA~1/MICROS~1.0/Common7/Tools:\
    /cygdrive/c/WINDOWS/MICROS~1.NET/FRAMEW~1/:\
    /cygdrive/c/WINDOWS/MICROS~1.NET/FRAMEW~1/V20~1.507:\
    /cygdrive/c/PROGRA~1/MICROS~1.0/VC/VCPACK~1:\
    /cygdrive/c/PROGRA~1/MICROS~3/Windows/v7.0/bin:\
    /src/openssl:\
    /src/nsis:\
    /src/inno5:\
    /usr/local/bin:\
    /usr/bin:\
    /bin:\
    /cygdrive/c/WINDOWS/system32:\
    /cygdrive/c/WINDOWS:\
    /cygdrive/c/WINDOWS/System32/Wbem

    export ERL_TOP=/src/otp_src_R13B04
    export PATH=$ERL_TOP/release/win32/erts-5.7.5/bin:$ERL_TOP/erts/etc/win32/cygwin_tools/vc:$ERL_TOP/erts/etc/win32/cygwin_tools:/cygdrive/c/PROGRA~1/MICROS~1.0/Common7/IDE:/cygdrive/c/PROGRA~1/MICROS~1.0/VC/BIN:/cygdrive/c/PROGRA~1/MICROS~1.0/Common7/Tools:/cygdrive/c/WINDOWS/MICROS~1.NET/FRAMEW~1/:/cygdrive/c/WINDOWS/MICROS~1.NET/FRAMEW~1/V20~1.507:/cygdrive/c/PROGRA~1/MICROS~1.0/VC/VCPACK~1:/cygdrive/c/PROGRA~1/MICROS~3/Windows/v7.0/bin:/src/openssl:/src/nsis:/src/inno5:/usr/local/bin:/usr/bin:/bin:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32/Wbem

    export ERL_TOP=/src/otp_src_R14A
    EXPORT PATH=$ERL_TOP/release/win32/erts-5.8/bin:$ERL_TOP/erts/etc/win32/cygwin_tools/vc:$ERL_TOP/erts/etc/win32/cygwin_tools:/cygdrive/c/PROGRA~1/MICROS~1.0/Common7/IDE:/cygdrive/c/PROGRA~1/MICROS~1.0/VC/BIN:/cygdrive/c/PROGRA~1/MICROS~1.0/Common7/Tools:/cygdrive/c/WINDOWS/MICROS~1.NET/FRAMEW~1/:/cygdrive/c/WINDOWS/MICROS~1.NET/FRAMEW~1/V20~1.507:/cygdrive/c/PROGRA~1/MICROS~1.0/VC/VCPACK~1:/cygdrive/c/PROGRA~1/MICROS~3/Windows/v7.0/bin:/src/openssl:/src/nsis:/src/inno5:/usr/local/bin:/usr/bin:/bin:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32/Wbem

## Download URLs - visible only in raw text view

[7zip_bits]:		http://downloads.sourceforge.net/sevenzip/7z465.exe
[7zip_license]:		http://www.7-zip.org/license.txt
[AWS console]:		https://console.aws.amazon.com/ec2/home#c=EC2&s=Instances
[AWS Windows Servers]:	http://developer.amazonwebservices.com/connect/kbcategory.jspa?categoryID=201
[bitvise_sshd_bits]:	http://dl.bitvise.com/WinSSHD5-Inst.exe
[curl]:			http://curl.haxx.se/download.html
[curl_license]:		http://curl.haxx.se/docs/copyright.html
[cygwin]:		http://www.cygwin.com/setup.exe
[DEP]:			http://support.microsoft.com/kb/875352
[erlang_R13B04]:	http://www.erlang.org/download/otp_src_R13B04.tar.gz
[erlang_R14A]:		http://www.erlang.org/download/otp_src_R14A.tar.gz
[icu_bits_curr]:	http://download.icu-project.org/files/icu4c/4.2/icu4c-4_2-Win32-msvc9.zip
[icu_bits_new]:		http://download.icu-project.org/files/icu4c/4.4.1/icu4c-4_4_1-Win32-msvc9.zip
[inno_bits]:		http://www.jrsoftware.org/download.php/is-unicode.exe
[inno_help]:		http://www.jrsoftware.org/ishelp/
[libcurl_bits]:		http://curl.haxx.se/download/libcurl-7.19.3-win32-ssl-msvc.zip
[libcurl_src]:		http://curl.haxx.se/download/curl-7.21.1.tar.gz
[msvc++]:		http://download.microsoft.com/download/E/8/E/E8EEB394-7F42-4963-A2D8-29559B738298/VS2008ExpressWithSP1ENUX1504728.iso
[msvc++webstart]:	http://download.microsoft.com/download/A/5/4/A54BADB6-9C3F-478D-8657-93B3FC9FE62D/vcsetup.exe
[mozbuild]:		http://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32/MozillaBuildSetup-Latest.exe
[notepadplus_bits]:	http://download.sourceforge.net/project/notepad-plus/notepad%2B%2B%20releases%20binary/npp%205.7%20bin/npp.5.7.Installer.exe
[nsis_bits]:		http://download.sourceforge.net/project/nsis/NSIS%202/2.46/nsis-2.46-setup.exe
[openssl_bits]:		http://www.slproweb.com/download/Win32OpenSSL-1_0_0a.exe
[openssl_license]:	http://www.openssl.org/source/license.html
[ramdisk]:		http://www.ltr-data.se/files/imdiskinst.exe
[seamonkey_bits]:	http://releases.mozilla.org/pub/mozilla.org/seamonkey/releases/2.0.6/source/seamonkey-2.0.6.source.tar.bz2
[SEHOP]:		http://support.microsoft.com/kb/956607
[vcredist]:		http://download.microsoft.com/download/d/d/9/dd9a82d0-52ef-40db-8dab-795376989c03/vcredist_x86.exe
[win7sdk_32bit]:	http://download.microsoft.com/download/2/E/9/2E911956-F90F-4BFB-8231-E292A7B6F287/GRMSDK_EN_DVD.iso
[win7sdk_64bit]:	http://download.microsoft.com/download/2/E/9/2E911956-F90F-4BFB-8231-E292A7B6F287/GRMSDKX_EN_DVD.iso
[wxwidgets_bits]:	http://sourceforge.net/projects/wxwindows/files/2.8.11/wxMSW-2.8.11.zip
[zlib-bits]:		http://zlib.net/zlib125-dll.zip
[zlib-src]:		http://zlib.net/zlib-1.2.5.tar.gz

