[Box Backup] Compile Boxi from tarball or trunk?

Achim boxbackup@boxbackup.org
Wed, 01 Apr 2009 16:20:57 +0200

Good afternoon:

After having managed to work out a robust build process for the CLI
interface of Box Backup (fantastic job, BTW), I am now looking into
creating a better user experience by using a GUI under Windows. I
understand that at the moment three options exist for local users to manage
Box Backup:

* Boxi [1] 
* Box Backup Explorer [2]
* The QT4 interface [3]. 

Box Backup Explorer seems to work only for Box 0.10 and requires Python,
and the QT project seems to be incomplete.

I like the looks of Boxi (as a native Win32 application) and have been able
to find the following two, rather old (2006!) pre-compiled binaries:


In the source code repos, I was able to find R548 on
<http://www.boxbackup.org/trac/browser/box/chris> and R626 on the official
project SNV <https://svn.sourceforge.net/svnroot/boxi/trunk/boxi>. As an
alternative, there is always the 0.1.0 tarball from

Unfortunately, none of the recent releases (R626, 0.1.0) compile under
Cygwin native (via MinGW) at the moment: see the (messy) details below.

Basically, I would be very grateful if somebody could point me to how to
compile any version of Boxi from source...

Thank you in advance, Achim

[1] <http://boxi.sourceforge.net/>
[2] <http://www.joonis.de/boxbackup-explorer>
[3] <http://code.google.com/p/adelinbackup/>

* * * Cywgin * * *
Install these Cygwin packages
* Devel/CPPunit
* Devel/cvs
* Devel/patchutils
* Devel/libtool
* Devel/gettext-devel
* Devel/pkg-config
* Devel/subversion

* * * wxWidgets * * *
Compile wxWidgets with compile information (either 2.6 or 2.8 with 2.6
tar xvzf wxWidgets-2.8.9.tar.gz
cd wxWidgets-2.8.9

export CFLAGS="-mno-cygwin -O4" CXXFLAGS="-mno-cygwin -O4"
CPPFLAGS="-mno-cygwin" LDFLAGS="-mno-cygwin -mwindows"

./configure --enable-unicode --with-msw --disable-precomp-headers
--without-expat --disable-shared --enable-debug --enable-debug_gdb

Configured wxWidgets 2.6.4 for `i686-pc-mingw32'

  Which GUI toolkit should wxWidgets use?                 msw
  Should wxWidgets be linked as a shared library?         no
  Should wxWidgets be compiled in Unicode mode?           yes
  What level of wxWidgets compatibility should be enabled?
                                       wxWidgets 2.4      no
                                       wxWidgets 2.6      yes
  Which libraries should wxWidgets use?
                                       jpeg               builtin
                                       png                builtin
                                       regex              builtin
                                       tiff               builtin
                                       zlib               sys
                                       odbc               no
                                       expat              no
                                       libmspack          no
                                       sdl                no

make && make samples

make install 

 The installation of wxWidgets is finished.  On certain
 platforms (e.g. Linux) you'll now have to run ldconfig
 if you installed a shared library and also modify the
 LD_LIBRARY_PATH (or equivalent) environment variable.

 wxWidgets comes with no guarantees and doesn't claim
 to be suitable for any purpose.

 Read the wxWidgets Licence on licencing conditions.

* * * Boxi 0.1.0 * * *
V0.1.0 from tarball:

$ cd boxbackup
$ ./configure
Box build environment setup.

Checking environment...
Compiler 1: yes
Compiler 2: yes
OpenSSL 1: no
OpenSSL 2: no

ERROR: OpenSSL library and headers need to be installed.

See documentation on web site if you need to add extra search paths.

Please note that the Boxi configure process calls the included Box Backup
configure process, which actually outputs the above OpenSSL error. Passing
any number of arguments to Box Backup configure that came to my mind via

cd boxbackup
./configure openssl:/usr/i686-pc-mingw32

did not change this. I also played around with
infrastructure/tests/common_tests.pl and added various hard-coded include
and library paths, but none of them worked.

Anyway, the Boxi configure process continues after the above error, but
ultimately fails with:

config.status: creating Makefile
config.status: creating intl/Makefile
config.status: creating po/Makefile.in
config.status: creating boxbackup/Makefile
config.status: error: cannot find input file: boxbackup/Makefile.in

which probably is a result of the second configure run, because
boxbackup/Makefile.in is included in the original tarball and then probably
rm'ed when re-running configure (which in turn unpacks boxbackup-0.09.tgz).

* * * Boxi R626 * * *
CPPUnit and wxWidgets seem to be the problems here: I compiled wxWidgets
with debug information, but there are still errors because wxApp,
wxFSVolumeBase and wxStackWalker are missing information (which should not
happen in a debug build).

./autogen.sh --target=i686-pc-mingw32


add /usr/include to flags in src/Makefile:

ln -s /usr/include/cppunit /usr/local/include/cppunit

and in src/Makefile
DEFAULT_INCLUDES = -I. -I$(top_builddir) -I/usr/local/include

In file included from main.cc:54:
../include/TestFileDialog.h: In constructor
../include/TestFileDialog.h:20: error: no matching function for call to

so we remove line 20 with the faulty constructor

main.cc: In member function `virtual void BoxiApp::OnAssertFailure(const
wxChar*, int, const wxChar*
, const wxChar*, const wxChar*)':
main.cc:342: error: `OnAssertFailure' is not a member of `wxApp'
make: *** [main.o] Error 1

(even though __WXDEBUG__ should be defined, as we compiled for debugging)

FileTree.cc:178: error: `wxFSVolumeBase' has not been declared
FileTree.cc:178: error: `GetVolumes' undeclared (first use this function)
FileTree.cc:178: error: (Each undeclared identifier is reported only once
for each function it appea
rs in.)
FileTree.cc:225: error: `wxFSVolumeBase' undeclared (first use this
FileTree.cc:225: error: expected `;' before "vol"
FileTree.cc:226: error: `vol' undeclared (first use this function)

In addition, there is trouble with MSVCRT as described in

Must include Box.h before sys/types.h is based on msvcrt macro comparison
which will always fail, because default value is 600 (and not 601 as

$ grep __MSVCRT_VERSION__  /usr/i686-pc-mingw32/include/_mingw.h
#ifndef __MSVCRT_VERSION__
# define __MSVCRT_VERSION__ 0x0600

change to

# define __MSVCRT_VERSION__ 0x0601

or pass -D__MSVCRT_VERSION__=0x0601 to the compiler