I've been having a very strange problem on the mac the last couple of days. Subversion went from happy camper to sad clown after a MacPorts package update.
- Subversion says it needs libexpat.so.0 at run time (to commit).
- libexpat.so* exists no where on the file system
- Expat only wants to generate static libraries. The port install only generates the static libs (la) and the last release downloaded and configured with --enable-shared still refuses to generate shared libraries. The CVS release blew up so many times I quit wasting my time and moved on.
- Subversion does not have an option to make without expat
- An expat mac install package exists, but doesn't contain the desired so file
What I'm confused about is how subversion is able to build without having expat's dynamic library to link to. If it links using the static lib then there should not be the need to load the dynamic library at run time unless it is specifically made to work this way for some reason.
Of course all of this pain and confusion vanquished upon taking a closer look at the error message:
svnserve: error while loading shared libraries: libexpat.so.0: cannot open shared object file: No such file or directory
svn: Commit failed (details follow):
svn: Connection closed unexpectedly
Woops, finally noticed the svnserve. ssh into Gentoo box, create a libexpat.so.0 symbolic link to the existing dynamic library. All is happy camping once again... Think about how there was some emerge -uDv world remote action at the same time as the port upgrade outdated. Slap forhead....
The three lessons learned:
- look at error messages carefully
- when something is server/client or distributed account for the remote side as a possible cause of the error
- don't start writing a blog post mid way though solving a problem =]