I'm trying to build svn client on Mac OS 10.7.5. My aim is to build svn client completely static so it would not depend on any dylib to be installed. The idea is that the svn client could be copied to a disk on key, or downloaded and will work without need to install or configure anything.
I downloaded the svn source code (subversion-1.7.8) and all the required dependencies (apr, par-util, neon, sqlite-amalgamation) and stated the configure - make - make install cycle.
Svn's configure option has --enable-all-static flag that creates the svn client that does not depend on external dylibs. However the build always fails with the following message:
Warning! dlname not found in /Volumes/mydisk/build/svn/libexec/mod_dav_svn.la.
Assuming installing a .so rather than a libtool archive.
chmod 755 /Volumes/mydisk/build/svn/libexec/mod_dav_svn.so
chmod: /Volumes/mydisk/wsvn/build/svn/libexec/mod_dav_svn.so: No such file or directory
apxs:Error: Command failed with rc=65536
.
make: *** [install-mods-shared] Error 1
It seems that the build is looking for mod_dav_svn.so even when it is not needed and everything compiles static.
Funny thing is that the svn client that was build actually runs! I would like however, to complete the build & install properly.
My questions are:
- Is this build error a real one or just something I can ignore?
- How can I avoid this build error, in order to complete the build?
Thanks
In my experience it can be tricky to compile applications that make use of 3rd party libraries and/or system libraries such as glibc etc. The problem is that in addition to your application being built statically, all these libraries need to provide both a dynamic (.so) version as well as a static version (.a) and some libraries just don't provide this, at least not easily. So you're forced to compile everything down the stack of dependencies yourself and this can be tough.
That being said here, courtesy Rick Vanderzwet's Blog:
Confirm with the following commands:
size of executable?
executable runs?
what does the executable depend on?
This last bit shows that this executable is still dependent on several dynamic libraries but it's much less than a typical dynamically built subversion!
EDIT #1
If you do not require
mod_dav_svn
support you can disable this through the use of the--without-serf
switch toconfigure
.NOTE #1: Disabling this support will disable your
svn
client's ability to access SVN repos viahttp
andhttps
!NOTE #2: If you look at the output from
svn --version
command you can see which repository access (RA) modules have been compiled into yoursvn
client.