[Box Backup] Compile Boxi from tarball or trunk?
Wed, 01 Apr 2009 16:20:57 +0200
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
* Boxi 
* Box Backup Explorer 
* The QT4 interface .
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
* * * Cywgin * * *
Install these Cygwin packages
* * * wxWidgets * * *
Compile wxWidgets with compile information (either 2.6 or 2.8 with 2.6
tar xvzf wxWidgets-2.8.9.tar.gz
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?
make && make samples
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
Box build environment setup.
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
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).
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
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
# define __MSVCRT_VERSION__ 0x0600
# define __MSVCRT_VERSION__ 0x0601
or pass -D__MSVCRT_VERSION__=0x0601 to the compiler