[PATCH] Shared samba build

Jelmer Vernooij jelmer at vernstok.nl
Wed Oct 26 12:47:29 GMT 2005


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi Peter!

Peter Novodvorsky wrote:

>>>>>> On Wed, 26 Oct 2005 14:17:08 +0200 "JV" == Jelmer
>>>>>> Vernooij <jelmer at vernstok.nl> wrote:
>>>
>>> Currently you can do shared build only on GCC/GNU binutils
>>> systems because it uses -( and -) flags to resolve dependencies
>>> between libraries.
>
> JV> Rather then linking everything into one big library, I think
> we JV> should clearly keep all subsystems seperate. Otherwise, we
> might JV> end up with the dependency hell we had (have?) in Samba3,
> with JV> libbigballofmud and the like.
>
> I suspect that we already have dependency hell in Samba4, and my
> find_depends command that is attached below will show you this.

I'm afraid you're indeed right there for a bit, but there's no point
in making it worse :-) It's not really as bad as you make it sound
like it is, imho.

>
> JV> When installing libraries from JV> Samba, these IMHO should be
> seperate as well, for example, we JV> could have: JV> JV> -
> libsmbclient (basically libcli) JV> - libmsrpc JV> - libtalloc JV>
> - libldb JV> - libtdb JV> - libnet JV> - libcom JV> -
> libsocket_wrapper JV> - libregistry ...
>
> That's what I was thinkning about when I was making this patch. And
> this patch is good platform for this. However separating
> everything so we don't have circullar dependencies is a huge
> janitor job that requires writing a policy for a whole project.

I don't think it's that hard - I'll commit some of my current work in
progress to show what I mean.

>
> JV> - Make a distinction between subsystems that are a part of
> another JV> subsystem (NDR_RAW, etc). JV> - All libs that are not
> part of another subsystem (those that have JV> MAJOR_VERSION and
> MINOR_VERSION set) will become shared libs if JV> the OS supports
> it. They'll be installed with Samba as well as JV> their specified
> headers.
>
> I prefer that builder should have a choice in almost everything
> including build types. If he wants shared we give him shared, if he
> wants static, we give static, because there can be a lot of
> applicances for samba where different builds are needed.

There's no point in building *everything* shared. For example, LIBNDR
makes sense as a shared library, but there's no point in also building
NDR_RAW and NDR_COMPRESSION as shared libs. They should be included in
libndr.so.

Cheers,

Jelmer
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (GNU/Linux)

iD8DBQFDX3rhPa9Uoh7vUnYRAgzcAJ9ibq0ScQGs3bC899mIH7/ZJe/fkwCfZeV7
R/VzQ/Eo0gIfaJtd6SRtT18=
=C7mY
-----END PGP SIGNATURE-----



More information about the samba-technical mailing list