Compiling ArangoDB under Windows

    With ArangoDB 3.0 a complete cmake environment was introduced. This alsostreamlines the dependencies on Windows. We suggest to use to install most ofthe dependencies. For sure most projects offer their own setup & installpackages, chocolatey offers a simplified way to install them with less userinteractions. You can even use chocolatey viaansibles 2.7 winrm facilityto do unattended installations of some software on Windows.

    First install the choco package manager by pasting this tiny cmdlet into acommand window with Administrator privileges (press Windows key, type and hit Ctrl+Shift+Enter):

    Since choco currently fails to alter the environment for,we suggest to download and install Visual Studio by hand.Currently Visual Studio 2017 is the only supported option.

    You need to make sure that it installs the Desktop development with C++ preset,else cmake will fail to detect it later on. Furthermore, the Windows 8.1 SDK and UCRT SDKoptional component is required to be selected during Visual Studio installation, else V8will fail to compile later on.

    After it successfully installed, start it once, so it can finish its setup.

    Now you can invoke the choco package manager for an unattended install of the dependencies(needs to be run with Administrator privileges again):

    1. choco install -y cmake.portable nsis python2 procdump windbg wget

    Then we need to install the OpenSSL library from its sources or using precompiled.

    Remember that you need to run below commands with Administrator privileges!

    If you want to checkout the code with git, install it like this:

    1. choco install -y git

    You need to allow andenable symlinks for your user.

    1. choco install -y winflexbison ruby

    Close and reopen the Administrator command window in order to continue with the ruby devkit:

    1. choco install -y ruby2.devkit

    And manually install the requirements via the Gemfile fetched from the ArangoDB Git repository(needs to be run with Administrator privileges):

    Note that the V8 build scripts and gyp aren’t compatible with Python 3.x hence you need python2!

    Download and extract the release tarball from

    Or clone the GitHub repository and checkout the branch or tag you need (e.g. devel)

    1. git clone -b devel
    2. cd arangodb

    Generate the Visual studio project files, and check back that cmake discovered all components on your system:

    1. mkdir Build64
    2. cd Build64

    Note that in some cases cmake struggles to find the proper python interpreter(i.e. the cygwin one won’t work). You can force overrule it by appending:

    1. -DPYTHON_EXECUTABLE:FILEPATH=C:/Python27/python.exe

    You can now load these in the Visual Studio IDE or use cmake to start the build:

    1. cmake --build . --config RelWithDebInfo

    The binaries need the ICU datafile icudt54l.dat, which is automatically copied into the directory containing theexecutable.

    If you intend to use the machine for development purposes, it may be more practical to copy it to a common place:

    The unit tests require a cygwin environment.

    You need at least make from cygwin. Cygwin also offers a cmake. Do not install the cygwin cmake.

    You should also issue these commands to generate user information for the cygwin commands:

    1. mkpasswd > /etc/passwd
    2. mkgroup > /etc/group

    Turning ACL off (noacl) for all mounts in cygwin fixes permissions troubles that may appear in the build:

    1. # /etc/fstab
    2. #
    3. # This file is read once by the first process in a Cygwin process tree.
    4. # To pick up changes, restart all Cygwin processes. For a description
    5. # see
    6. # noacl = Ignore Access Control List and let Windows handle permissions
    7. C:/cygwin64/bin /usr/bin ntfs binary,auto,noacl 0 0
    8. C:/cygwin64/lib /usr/lib ntfs binary,auto,noacl 0 0
    9. C:/cygwin64 / ntfs override,binary,auto,noacl 0 0
    10. none /cygdrive cygdrive binary,posix=0,user,noacl 0 0

    Cygwin will create proprietary files as placeholders by default instead ofactually symlinking files. The placeholders later tell Cygwin where to resolvepaths to. It does not intercept every access to the placeholders however, sothat 3rd party scripts break. Windows Vista and above support real symlinks,and Cygwin can be configured to make use of it:

    1. export CYGWIN="winsymlinks:native"

    Note that you must run Cygwin as administrator or change the Windows grouppolicies to allow user accounts to create symlinks (gpedit.msc if available).

    BTW: You can create symlinks manually on Windows like:

    1. mklink /H target/file.ext source/file.ext
    2. mklink /D target/path source/path
    3. mklink /J target/path source/path/for/junction

    And in Cygwin:

    You can then run the integration tests in the cygwin shell like that:

    1. Build64/bin/RelWithDebInfo/arangosh.exe \
    2. -c etc/relative/arangosh.conf \
    3. --log.level warning \
    4. --server.endpoint tcp:// \
    5. --javascript.execute UnitTests/unittest.js \
    6. -- \
    7. all \
    8. --build Build64 \
    9. --buildType RelWithDebInfo \
    10. --skipNondeterministic true \
    11. --skipTimeCritical true \
    12. --skipBoost true \