status of the s4 waf build - go to stage 3?

tridge at samba.org tridge at samba.org
Sat Apr 24 18:12:35 MDT 2010


Hi Brad,

 > After your encouragement today, I gave this a try.

thanks!

 > The libLIBFOO stuff looks a bit strange - perhaps something not getting 
 > substituted correctly?

no, that's just what the libraries are called. I kept the same names
as the old build system. The difference is that most of these libs got
rolled into the binaries or other libraries as objects in the old
system, instead of being built as shared libs.

We could certainly rename these libs to use better names :-)

 > Also, the pkgconfig files don't have the right filenames (no -samba4 suffix).
 > [bradh-dev at repens lib]$ cat pkgconfig/dcerpc.pc 
 > prefix=${prefix}
 > exec_prefix=${prefix}
 > libdir=${prefix}/lib
 > includedir=${prefix}/include
 > 
 > Name: dcerpc
 > Description: DCE/RPC client library
 > Requires: ndr
 > Version: 0.0.1
 > Libs: -L${libdir} -ldcerpc 
 > Cflags: -I${includedir} -DHAVE_IMMEDIATE_STRUCTURES=1
 > 
 > So that isn't going to work for openchange.

The reason this happens is that it is using library bundling, and the
build system is trying to avoid possible conflicts with installed
system libraries. So the pkgconfig and library names are actually as
they are supposed to be.

For libs like libtdb.so, this bundling avoids problems with a
user-installed tdb library conflicting with a system installed tdb
library. 

I suggest you have a read of this:

  http://wiki.samba.org/index.php/Waf#working_with_libraries

which should explain how the library handling works with the waf build.

There are a few ways we could make this work for openchange:

 1) you could use the --bundled-libraries configure option to force
 Samba4 so not use the bundled library extension for the libraries you
 need

 2) we could mark some of these libraries as not needing
 bundling. This means we'd be saying that they will not be packaged
 separately

 3) we could add a configure option to put the bundled library name in
 the pkgconfig file.

Probably (1) is the simplest for your builds. See the web page above
for more information on this. You may also like to use
--builtin-libraries to force some of the libraries to be rolled into
the other libs (as per the old build system).

Cheers, Tridge


More information about the samba-technical mailing list