Compiling Box Backup on Windows with MinGW

This page describes how you can build Box Backup on Windows using Cygwin and MinGW. This is how my windows client releases are compiled.

You will need quite a bit of software to make this work. All of it is available for free on the Internet.

MinGW C++

Start by installing Cygwin on your Windows machine from  http://www.cygwin.org/cygwin/.

Make sure to select the following packages during installation:

  • Devel/automake
  • Devel/autoconf
  • Devel/gcc-mingw
  • Devel/gcc-mingw-core
  • Devel/gcc-mingw-g++
  • Devel/make
  • Devel/mingw-runtime
  • Lib/libxml2
  • Lib/libxslt
  • Mingw/mingw-zlib
  • Perl/Perl?

If you already have Cygwin installed, please re-run the installer and ensure that those packages are installed.

If you are going to check out the code from our Subversion repository, rather than using a distribution tarball, please download the Cygwin Subversion client as well, and use it to check out the code, rather than the Windows native version.

Base Directory

Choose a directory where you will unpack and compile OpenSSL, Zlib and Box Backup. We will call this the base directory. An example might be:

C:\Cygwin\Home\Your Username

Make sure you know the full path to this directory.

OpenSSL

Download the  OpenSSL 0.9.7i source code.

Open a Cygwin shell, go to the base directory, and unpack OpenSSL:

tar xzvf openssl-0.9.7i.tar.gz

Configure OpenSSL for MinGW compilation, and build and install it:

cd openssl-0.9.7i
./Configure --prefix=/usr/i686-pc-mingw32/ mingw
make
make install

PCRE

This step is only required to support regular expressions in including/excluding files from backups. However, this is a very useful feature.

Download PCRE from  http://prdownloads.sourceforge.net/pcre/pcre-6.3.tar.bz2?download

Open a Cygwin shell, go to the base directory, and unpack PCRE:

tar xjvf pcre-6.3.tar.bz2

Configure PCRE for MinGW compilation, and build and install it:

cd pcre-6.3
export CFLAGS="-mno-cygwin"
./configure
make winshared
cp .libs/libpcre.a .libs/libpcreposix.a /lib/mingw
cp pcreposix.h /usr/include/mingw

Download Box Backup

Go back to the base directory, and download the latest Box Backup sources:

svn co https://www.boxbackup.org/svn/box/trunk/ trunk

Note: If you have problems during the configure or make stage, please try to eliminate one potential source of problems by running the following command to convert all line endings to Unix format:

find -type f -not \( -wholename .*svn*. \) -exec dos2unix {} \;

Compile Box Backup

Enter the source directory and configure like this:

cd trunk
./infrastructure/mingw/configure.sh
make

Installation

Create the destination directory, C:\Program Files\Box Backup\bbackupd.

Write a configuration file, keys and certificate on a Unix machine, and copy them into the Box Backup directory, together with the following files from the base directory:

  • boxbackup\release\bin\bbackupd\bbackupd.exe
  • boxbackup\release\bin\bbackupquery\bbackupquery.exe
  • boxbackup\release\bin\bbackupctl\bbackupctl.exe
  • openssl\out32dll\libeay32.dll
  • openssl\out32dll\ssleay32.dll
  • zlib\zlib1.dll

Ensure that the user running Box Backup can read from the Box Backup directory, and write to the bbackupd directory inside it.

Run Box Backup by double-clicking on it, and check that it connects to the server. If the window opens and closes immediately, it's probably due to a problem with the configuration file - check the Windows Event Viewer for details.

See also the service installation and upgrade instructions on the CompilationOnWindows page.