[SCM] Samba Shared Repository - branch master updated

Andrew Tridgell tridge at samba.org
Thu Oct 21 02:46:02 MDT 2010


The branch, master has been updated
       via  6c3e670 waf: check the linker accepts a set of ldflags before using them
       via  6fd9fee s4-dsdb: force LDB_ERR_NO_SUCH_ATTRIBUTE on missing schemaInfo
       via  19f8dc9 s4-ldb: make ldb_options_find() public
       via  dc729c6 waf: loosen the restriction on depending on python libs
       via  7ffb781 waf-python: make the pyext flag add the pyembed features for libraries
       via  0966776 waf: fixed the handling of -Wl,-no-undefined
       via  97ce2d8 s4-librpc: fixed depenencies for libcli/security
       via  d98efff libcli: LIBSECURITY depends on NDR_SECURITY
       via  1711584 s4-dsdb: fixed depenencies for -no-undefined
       via  6ce4125 s4-events: LIBEVENTS depends on LIBSAMBA-UTIL
       via  56640a8 s4-rpc_server: split out DCERPC_SHARE as a separate subsystem
       via  1748d10 s4-python: python_samba needs pyext
       via  51dc322 waf: show duplicate objects in python modules as well as libraries
       via  cef53b2 s4-waf: removed the dependency loop between ntvfs and dcerpc_server
       via  11bce8c librpc: added a few more NDR_* targets to NDR_SAMBA
       via  bbe016b s4-ldb: make pyldb_util a private library
       via  4af5951 librpc: added RPC_NDR_SAMBA grouping library
       via  1cbb615 lib: make WRAP_XATTR a private library
       via  ec7bb90 waf: added pyext option to SAMBA_LIBRARY()
       via  f7aca49 librpc: added NDR_XATTR and NDR_UNIXINFO to the NDR_SAMBA grouping library
       via  af36485 s4-python: added a samba_python grouping library
       via  19bae68 s4-param: added a libshares grouping library
       via  62d7b27 s3-waf: mark some libraries as private
       via  7a2cad4 waf: raise an error on a dependency on a python module
       via  b4dd1ac s4-waf: don't depend directly on python modules
       via  3981399 s4-waf: removed the XATTR and SASL aliases
       via  6f36a01 waf: prevent the global deps list creating depenency loops
       via  e98ca6e s4-libcli: make LIBSECURITY_SESSION a private library
       via  4b3fae6 s4-socket: make LIBNETIF a private library
       via  aa0dbdc s4-events: make LIBEVENTS a private library
       via  7c92baf s4-kdc: make DB_GLUE a private library
       via  ae5c4cd s4-dsdb: make ldb_password_hash depend on hdb not HEIMDAL_HDB_KEYS
       via  323c1a8 nsswitch: make LIBWINBIND-CLIENT a private library
       via  0b255c0 nsswitch: make LIBWBCLIENT a private library
       via  6c60b8b lib: add UTIL_TEVENT to samba_sockets grouping library
       via  5ecd872 s4-libcli: make LIBSAMBA-ERRORS a private library
       via  6ba86d8 s4-lib: make SMBPASSWD a private library
       via  47591ea s4-dsdb: moved a bunch of fuctions from schema/schema_info_attr.c to samdb/ldb_modules/schema_util.c
       via  cffbccb s4-waf: make NDR_STANDARD a grouping library and add NDR_SAMBA4
       via  acffaf2 s4-build: make LIBSAMBA-NET a private library
       via  9bc47cc waf-build: create a NDR_SAMBA grouping library
       via  f39b210 waf-build: create a samba_sockets grouping library
       via  2dcb596 s4-waf: removed dependencies on missing subsystems
       via  7cba3cf waf: replace the is_bundled option with private_library
       via  1d87335 waf: added the concept of a grouping_library
       via  713900b s4-build: fixed some formatting
       via  579f06e build: subunit and popt need to be marked as private libraries
       via  e2a2c71 waf: cope with libraries with a specified version number
       via  aa88884 s4-libcli: make LIBCLI_LDAP a private library
       via  e73739a s4-auth: make auth a private library
       via  a913e79 replace: make libreplace a private library
       via  0ad5937 s4-ndr: make NDR_TABLE a private library
       via  35b61c2 libcli: make LIBCLI_NBT a private library
       via  dc00b77 wrapper: make socket_wrapper, uid_wrapper and nss_wrapper private libs
       via  29c0b86 waf: re-work the module alias code
       via  9a2c9c2 s4-dsdb: make SAMDB_COMMON into a private library
       via  8709c3c libcli: make the LIBSECURITY subsystem into a private library
       via  e596a4e waf: fixed expansion of direct_objects and direct_libs
       via  cd7190b waf: allows libraries to be marked as private_library=True
       via  c0878cf waf: rework expand_subsystem_deps()
       via  14081ef waf: added --show-deps and --show-duplicates
      from  8044a20 ldb:ldb_modules.c - if we don't find the associated dynamic object then please close the handle

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 6c3e670f31beb5766b906e26ddc0c5d75b401137
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 18:36:41 2010 +1100

    waf: check the linker accepts a set of ldflags before using them
    
    Autobuild-User: Andrew Tridgell <tridge at samba.org>
    Autobuild-Date: Thu Oct 21 08:45:49 UTC 2010 on sn-devel-104

commit 6fd9fee502067dd2e864ebfce50302af062ee2d6
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 18:17:59 2010 +1100

    s4-dsdb: force LDB_ERR_NO_SUCH_ATTRIBUTE on missing schemaInfo
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>

commit 19f8dc9580a772620a39b09585e8c7f8f5deac13
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 17:55:24 2010 +1100

    s4-ldb: make ldb_options_find() public
    
    we need to make this symbol public to allow for -Wl,-no-undefined, as
    otherwise the pyldb module can't find the symbol when it creates the
    module

commit dc729c62eaadff081dea28a4f8769af45c83c4cf
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 17:45:23 2010 +1100

    waf: loosen the restriction on depending on python libs
    
    the pidl generated python code can generate dependencies between two
    python modules, so we have to allow this for now

commit 7ffb781e81ef15bed730a8c2c3ddc4280485ee9f
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 17:44:32 2010 +1100

    waf-python: make the pyext flag add the pyembed features for libraries
    
    this is rather strange, but we get build errors without it. There may
    be a bug in the waf python tool, or I may misunderstand how to use it

commit 0966776b363ac7a66a5d22c05d474e35e6994c68
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 17:41:42 2010 +1100

    waf: fixed the handling of -Wl,-no-undefined
    
    this flag was not being propogated to our link rules, so we were not
    in fact enforcing no undefined symbols in libraries.

commit 97ce2d89655497320ca5842b9dd8dd0d7071bb64
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 17:36:15 2010 +1100

    s4-librpc: fixed depenencies for libcli/security
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>

commit d98effffe4857765b6a8851d96af3fc73ac1801b
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 17:34:55 2010 +1100

    libcli: LIBSECURITY depends on NDR_SECURITY
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>

commit 171158482175f7ff6187c7535385e83ac28a086e
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 17:14:10 2010 +1100

    s4-dsdb: fixed depenencies for -no-undefined
    
    added some depenencies needed for -Wl,-no-undefined

commit 6ce4125bbe364743596d1e087f7a94e810605421
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 17:13:26 2010 +1100

    s4-events: LIBEVENTS depends on LIBSAMBA-UTIL
    
    it needs it for the debug code
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>

commit 56640a8501625d29745269fcddc1980c6b751a2a
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 17:12:31 2010 +1100

    s4-rpc_server: split out DCERPC_SHARE as a separate subsystem
    
    this avoids a problem with -Wl,-no-undefined in the ntvfs layer
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>

commit 1748d10e47c1000c56594a103c35b7962b5a5da2
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 17:11:20 2010 +1100

    s4-python: python_samba needs pyext

commit 51dc322f6314cd94eb2bfc72d2c83fb8a55a1134
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 15:30:27 2010 +1100

    waf: show duplicate objects in python modules as well as libraries
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>

commit cef53b289b28e208602e34cfe8c93e05102bdc29
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 15:27:50 2010 +1100

    s4-waf: removed the dependency loop between ntvfs and dcerpc_server
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>

commit 11bce8ce0334d2c903962fe901a34ff45bb150e8
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 15:27:25 2010 +1100

    librpc: added a few more NDR_* targets to NDR_SAMBA
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>

commit bbe016b77c6fd08e66a099e012c365103410d0e0
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 15:26:38 2010 +1100

    s4-ldb: make pyldb_util a private library
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>

commit 4af59515f61e43d0e59f58942cc60d1a0de5d28d
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 15:26:20 2010 +1100

    librpc: added RPC_NDR_SAMBA grouping library
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>

commit 1cbb6150a146ec94ec5f95ae6a5666ea546d3693
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 15:26:00 2010 +1100

    lib: make WRAP_XATTR a private library
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>

commit ec7bb906db95e77b78310f5e2c3e584e5d6de59c
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 15:25:44 2010 +1100

    waf: added pyext option to SAMBA_LIBRARY()
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>

commit f7aca49e20df34e463f7447d02bc11f6d2095cf9
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 14:58:14 2010 +1100

    librpc: added NDR_XATTR and NDR_UNIXINFO to the NDR_SAMBA grouping library
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>

commit af36485ae54b2a9a1263468ec4388423ccb3588b
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 14:57:34 2010 +1100

    s4-python: added a samba_python grouping library
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>

commit 19bae689c108ff1f85ee5ce147aa54a9d28f5f30
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 14:56:59 2010 +1100

    s4-param: added a libshares grouping library
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>

commit 62d7b2780807a72e7ae5bb53d65e564f0096ace3
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 14:56:36 2010 +1100

    s3-waf: mark some libraries as private
    
    public libraries must have a vnum specified

commit 7a2cad43df77741997b1009d83280f095c6d99dc
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 14:55:19 2010 +1100

    waf: raise an error on a dependency on a python module
    
    it is never correct to list a dependency on a python module
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>

commit b4dd1accc8178bed96ab8606dc655d30826886e6
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 14:54:11 2010 +1100

    s4-waf: don't depend directly on python modules
    
    build rules should not list dependencies on python modules. Instead,
    if code needs the module it should use the python API import calls to
    access the module.
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>

commit 3981399957a8f2d608adb33e9ced1c50bcb1f5dc
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 14:52:25 2010 +1100

    s4-waf: removed the XATTR and SASL aliases
    
    these were hangovers from the old build system names
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>

commit 6f36a015b1975a9ea027da8cf009cd38f074d77f
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 13:52:47 2010 +1100

    waf: prevent the global deps list creating depenency loops
    
    this prevents a loop between SOCKET_WRAPPER and replace in the s3 waf
    build

commit e98ca6e868eb8cc25968e67ada2e153e828131ff
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 13:52:15 2010 +1100

    s4-libcli: make LIBSECURITY_SESSION a private library

commit 4b3fae6ca8ed29b7c74edf589de678418cb3481a
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 13:51:55 2010 +1100

    s4-socket: make LIBNETIF a private library

commit aa0dbdc5b11a0efa46ff540d99875690c6244c25
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 13:51:40 2010 +1100

    s4-events: make LIBEVENTS a private library

commit 7c92baf0dc8e6c4dacfec07e22c4552d0d5ee118
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 13:51:21 2010 +1100

    s4-kdc: make DB_GLUE a private library

commit ae5c4cd6f9da3157acfb90dcb296aefd8e7f1e1e
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 13:51:02 2010 +1100

    s4-dsdb: make ldb_password_hash depend on hdb not HEIMDAL_HDB_KEYS
    
    this prevents a duplicate object file

commit 323c1a8679fc50fd4ae810d541a06489219e3c72
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 13:50:13 2010 +1100

    nsswitch: make LIBWINBIND-CLIENT a private library

commit 0b255c0da6d4c97ad8d733c8632fa8472bd47b5e
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 13:49:55 2010 +1100

    nsswitch: make LIBWBCLIENT a private library

commit 6c60b8be03c195c06301b04a656ff1281be2eb09
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 12:58:31 2010 +1100

    lib: add UTIL_TEVENT to samba_sockets grouping library
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>

commit 5ecd87230e2a83f7925b519c596ddecb89674577
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 12:57:56 2010 +1100

    s4-libcli: make LIBSAMBA-ERRORS a private library
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>

commit 6ba86d8ca31635b16670c59e645ceacdb256c054
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 12:57:36 2010 +1100

    s4-lib: make SMBPASSWD a private library
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>

commit 47591ea5ec03916393d22484e3b551da033260ea
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 12:47:57 2010 +1100

    s4-dsdb: moved a bunch of fuctions from schema/schema_info_attr.c to samdb/ldb_modules/schema_util.c
    
    these functions operate on ldb_modules, so they should be in the
    ldb_modules directory. They also should return ldb errors codes, not
    WERROR codes, as otherwise the error can be hidden from the ldap
    caller
    
    This re-arrangement fixes a dependency loop in the schema/samdb code.
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>
    Pair-Programmed-With: Kamen Mazdrashki <kamenim at samba.org>

commit cffbccb5cb0046bc9713de5d5a89d7f8236888f4
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 11:29:46 2010 +1100

    s4-waf: make NDR_STANDARD a grouping library and add NDR_SAMBA4
    
    this collects a number of subsystems into logical groups
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>

commit acffaf2bfb5d78c756224fe36e5667ce79b67f71
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 11:28:58 2010 +1100

    s4-build: make LIBSAMBA-NET a private library
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>

commit 9bc47cc4557c856b2095ffe709351ab3173b9783
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 11:28:27 2010 +1100

    waf-build: create a NDR_SAMBA grouping library
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>

commit f39b21008f578fa2cf91e2cdc9ebc0ca15100e9a
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 11:28:05 2010 +1100

    waf-build: create a samba_sockets grouping library
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>

commit 2dcb596e8302856a66e8d6f11457ad87d1ad1dab
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 11:25:59 2010 +1100

    s4-waf: removed dependencies on missing subsystems
    
    these were left over from the old config.mk system

commit 7cba3cfac8781061e4114573517b30baedbf891a
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 11:22:36 2010 +1100

    waf: replace the is_bundled option with private_library
    
    'private_library' better captures what we are trying to get at when we
    bundle a library

commit 1d8733537e47439f8d79cd78d278eace1b795df3
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 11:19:09 2010 +1100

    waf: added the concept of a grouping_library
    
    a grouping library is one which 'groups' a set of subsystems. This
    means that if a target depends on a subsystem that is within a
    grouping library then that dependency is replaced with a dependency on
    the grouping library.
    
    This gives us a powerful method to avoid duplicated object files
    between libraries.
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>

commit 713900b81297548c44a890c3bca1dde9019af8bc
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 08:59:06 2010 +1100

    s4-build: fixed some formatting
    
    indentation was far too deep

commit 579f06e0014adf5c1ce3df6add4fb03d53673a3b
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 08:58:35 2010 +1100

    build: subunit and popt need to be marked as private libraries
    
    they have no vnum

commit e2a2c717573fda174a93f823c1c4bccf214052c0
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 08:54:36 2010 +1100

    waf: cope with libraries with a specified version number
    
    this fixes a problem with libnss_winbind.so.2. Thanks to Jelmer for
    spotting this.

commit aa88884d37915ac06ed33766e6ad7460d1306d62
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 08:30:55 2010 +1100

    s4-libcli: make LIBCLI_LDAP a private library
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>

commit e73739a338fd2586e64a6c892e6f798c08b31a22
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 08:30:39 2010 +1100

    s4-auth: make auth a private library
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>

commit a913e79ee52fa21b9d7469a497fc8f63571fc913
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 08:30:15 2010 +1100

    replace: make libreplace a private library
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>

commit 0ad5937b4e353f9dd026cbf6a9555afbedc7ca39
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 08:29:24 2010 +1100

    s4-ndr: make NDR_TABLE a private library
    
    this greatly reduces the size of ndrdump, and saves us a fair bit of
    duplication
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>

commit 35b61c23650da1ec971ffd37c534fc82903b9940
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 08:28:35 2010 +1100

    libcli: make LIBCLI_NBT a private library

commit dc00b773fc67ff55567e3c159749f1e55f4a5b1f
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 08:28:12 2010 +1100

    wrapper: make socket_wrapper, uid_wrapper and nss_wrapper private libs
    
    this prevents double instantiation
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>

commit 29c0b86126c2eb4e5c921f63b10e796bce647e1a
Author: Andrew Tridgell <tridge at samba.org>
Date:   Thu Oct 21 08:27:07 2010 +1100

    waf: re-work the module alias code
    
    we now create a base library, and then create the alias modules as
    wrappers around that base. That prevents double instantiation of any
    object files in the modules
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>

commit 9a2c9c2fc264627494b16923f3055d4aa09ae835
Author: Andrew Tridgell <tridge at samba.org>
Date:   Wed Oct 20 18:19:55 2010 +1100

    s4-dsdb: make SAMDB_COMMON into a private library
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>

commit 8709c3c0f2695b199bb63fee27c6ae054d665209
Author: Andrew Tridgell <tridge at samba.org>
Date:   Wed Oct 20 18:19:31 2010 +1100

    libcli: make the LIBSECURITY subsystem into a private library
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>

commit e596a4e6c3598d0045c330a595bd0a05b6c33bb7
Author: Andrew Tridgell <tridge at samba.org>
Date:   Wed Oct 20 18:17:52 2010 +1100

    waf: fixed expansion of direct_objects and direct_libs
    
    these do not need to be expanded in break_dependency_loops()

commit cd7190b802b4c4c645a7973156833b2a17db1965
Author: Andrew Tridgell <tridge at samba.org>
Date:   Wed Oct 20 18:17:13 2010 +1100

    waf: allows libraries to be marked as private_library=True
    
    this is for libraries where we make no promises about the API, but
    where we wish it to be a library to allow our binaries to use common
    code.
    
    These libraries always get the project suffix added to the library
    name, to ensure we are in a separate namespace
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>

commit c0878cfb615d35fc3a62e45fa9ecab7f178ecb3c
Author: Andrew Tridgell <tridge at samba.org>
Date:   Wed Oct 20 18:11:31 2010 +1100

    waf: rework expand_subsystem_deps()
    
    make the variable names a lot clearer, and restrict the expansion of
    subsystem deps to object style subsystems and modules. If a subsystem
    or a module is built as a library then we don't need to expand the
    dependencies across that boundary
    
    Pair-Programmed-With: Andrew Bartlett <abartlet at samba.org>

commit 14081efcc07e02a479ed3121a2359b9dd766a378
Author: Andrew Tridgell <tridge at samba.org>
Date:   Wed Oct 20 18:09:45 2010 +1100

    waf: added --show-deps and --show-duplicates
    
    these options make it easier to examine our depenency tree, by showing
    any objects linked into more than one library, and by showing the
    dependency tree for a chosen target

-----------------------------------------------------------------------

Summary of changes:
 buildtools/wafsamba/samba_autoconf.py              |   23 +-
 buildtools/wafsamba/samba_bundled.py               |    4 +-
 buildtools/wafsamba/samba_deps.py                  |  176 +++++++++--
 buildtools/wafsamba/samba_install.py               |    2 +-
 buildtools/wafsamba/samba_utils.py                 |    3 +
 buildtools/wafsamba/wafsamba.py                    |   97 ++++--
 buildtools/wafsamba/wscript                        |    8 +
 lib/nss_wrapper/wscript_build                      |    9 +-
 lib/popt/wscript                                   |    3 +-
 lib/replace/wscript                                |    1 +
 lib/socket_wrapper/wscript_build                   |    9 +-
 lib/subunit/c/wscript                              |    6 +-
 lib/talloc/wscript                                 |    6 +-
 lib/tdb/wscript                                    |    3 +-
 lib/tevent/wscript                                 |    2 +-
 lib/uid_wrapper/wscript_build                      |    9 +-
 lib/util/wscript_build                             |   13 +-
 lib/wscript_build                                  |    7 +
 libcli/ldap/wscript_build                          |    2 +-
 libcli/nbt/wscript_build                           |    9 +-
 libcli/security/wscript_build                      |    9 +-
 librpc/wscript_build                               |   16 +
 nsswitch/libwbclient/wscript_build                 |    9 +-
 nsswitch/wscript_build                             |   11 +-
 source3/wscript_build                              |    5 +
 source4/auth/gensec/wscript_build                  |    2 +-
 source4/auth/ntlm/wscript_build                    |   11 +-
 source4/dsdb/samdb/ldb_modules/samldb.c            |   15 +-
 source4/dsdb/samdb/ldb_modules/schema_util.c       |  338 ++++++++++++++++++++
 source4/dsdb/samdb/ldb_modules/wscript_build       |   18 +-
 source4/dsdb/schema/schema_info_attr.c             |  268 ----------------
 source4/dsdb/wscript_build                         |   14 +-
 source4/heimdal_build/wscript_build                |   14 +-
 source4/kdc/wscript_build                          |    5 +-
 source4/lib/events/wscript_build                   |   11 +-
 .../ldb/ABI/{ldb-0.9.16.sigs => ldb-0.9.17.sigs}   |    1 +
 source4/lib/ldb/common/ldb_options.c               |    2 +-
 source4/lib/ldb/wscript                            |   10 +-
 source4/lib/messaging/wscript_build                |    2 +-
 source4/lib/registry/wscript_build                 |    2 +-
 source4/lib/samba3/wscript_build                   |    9 +-
 source4/lib/socket/wscript_build                   |   11 +-
 source4/libcli/ldap/wscript_build                  |   15 +-
 source4/libcli/security/wscript_build              |   11 +-
 source4/libcli/wscript_build                       |   13 +-
 source4/libnet/wscript_build                       |    5 +-
 source4/librpc/wscript_build                       |   25 +-
 source4/ntvfs/ipc/rap_server.c                     |    1 +
 source4/ntvfs/posix/wscript_build                  |    6 +-
 source4/ntvfs/wscript_build                        |   12 +-
 source4/param/wscript_build                        |    5 +
 source4/rpc_server/srvsvc/dcesrv_srvsvc.c          |    1 +
 source4/rpc_server/wkssvc/dcesrv_wkssvc.c          |    1 +
 source4/rpc_server/wscript_build                   |   10 +-
 source4/scripting/python/wscript_build             |    7 +
 source4/smbd/wscript_build                         |    6 +-
 source4/torture/drs/unit/schemainfo_tests.c        |   29 +-
 source4/torture/drs/wscript_build                  |    2 +-
 source4/torture/wscript_build                      |    2 +-
 source4/web_server/wscript_build                   |    2 +-
 source4/wscript_build                              |   25 --
 61 files changed, 833 insertions(+), 520 deletions(-)
 create mode 100644 source4/dsdb/samdb/ldb_modules/schema_util.c
 copy source4/lib/ldb/ABI/{ldb-0.9.16.sigs => ldb-0.9.17.sigs} (99%)


Changeset truncated at 500 lines:

diff --git a/buildtools/wafsamba/samba_autoconf.py b/buildtools/wafsamba/samba_autoconf.py
index dffc5f0..ea2ef09 100644
--- a/buildtools/wafsamba/samba_autoconf.py
+++ b/buildtools/wafsamba/samba_autoconf.py
@@ -436,6 +436,15 @@ def CHECK_CFLAGS(conf, cflags):
                       ccflags=cflags,
                       msg="Checking compiler accepts %s" % cflags)
 
+ at conf
+def CHECK_LDFLAGS(conf, ldflags):
+    '''check if the given ldflags are accepted by the linker
+    '''
+    return conf.check(fragment='int main(void) { return 0; }\n',
+                      execute=0,
+                      ldflags=ldflags,
+                      msg="Checking linker accepts %s" % ldflags)
+
 
 @conf
 def CONFIG_SET(conf, option):
@@ -457,6 +466,10 @@ def library_flags(conf, libs):
         extra_ldflags = TO_LIST(getattr(conf.env, 'LDFLAGS_%s' % lib.upper(), []))
         ccflags.extend(extra_ccflags)
         ldflags.extend(extra_ldflags)
+    if 'EXTRA_LDFLAGS' in conf.env:
+        ldflags.extend(conf.env['EXTRA_LDFLAGS'])
+    ccflags = unique_list(ccflags)
+    ldflags = unique_list(ldflags)
     return (ccflags, ldflags)
 
 
@@ -615,7 +628,7 @@ def ADD_LDFLAGS(conf, flags, testflags=False):
     if testflags:
         ok_flags=[]
         for f in flags.split():
-            if CHECK_CFLAGS(conf, f):
+            if CHECK_LDFLAGS(conf, f):
                 ok_flags.append(f)
         flags = ok_flags
     if not 'EXTRA_LDFLAGS' in conf.env:
@@ -646,14 +659,6 @@ def CURRENT_CFLAGS(bld, target, cflags, hide_symbols=False):
     return ret
 
 
-def CURRENT_LDFLAGS(bld, target, cflags, hide_symbols=False):
-    '''work out the current loader flags. local flags are added first'''
-    flags = CURRENT_CFLAGS(bld, target, cflags, hide_symbols=hide_symbols)
-    if 'EXTRA_LDFLAGS' in bld.env:
-        flags.extend(bld.env['EXTRA_LDFLAGS'])
-    return flags
-
-
 @conf
 def CHECK_CC_ENV(conf):
     """trim whitespaces from 'CC'.
diff --git a/buildtools/wafsamba/samba_bundled.py b/buildtools/wafsamba/samba_bundled.py
index 822e49c..e5310da 100644
--- a/buildtools/wafsamba/samba_bundled.py
+++ b/buildtools/wafsamba/samba_bundled.py
@@ -4,11 +4,11 @@ from Configure import conf
 import Logs
 from samba_utils import *
 
-def BUNDLED_NAME(bld, name, bundled_extension):
+def BUNDLED_NAME(bld, name, bundled_extension, private_library):
     '''possibly rename a library to include a bundled extension'''
     if bld.env.DISABLE_SHARED or not bundled_extension:
         return name
-    if name in bld.env.BUNDLED_EXTENSION_EXCEPTION:
+    if name in bld.env.BUNDLED_EXTENSION_EXCEPTION and not private_library:
         return name
     extension = getattr(bld.env, 'BUNDLED_EXTENSION', '')
     if extension:
diff --git a/buildtools/wafsamba/samba_deps.py b/buildtools/wafsamba/samba_deps.py
index 933a18b..a89c3e8 100644
--- a/buildtools/wafsamba/samba_deps.py
+++ b/buildtools/wafsamba/samba_deps.py
@@ -47,30 +47,48 @@ Build.BuildContext.EXPAND_ALIAS = EXPAND_ALIAS
 
 def expand_subsystem_deps(bld):
     '''expand the reverse dependencies resulting from subsystem
-       attributes of modules'''
-    subsystems = LOCAL_CACHE(bld, 'INIT_FUNCTIONS')
+       attributes of modules. This is walking over the complete list
+       of declared subsystems, and expands the samba_deps_extended list for any
+       module<->subsystem dependencies'''
+
+    subsystem_list = LOCAL_CACHE(bld, 'INIT_FUNCTIONS')
     aliases    = LOCAL_CACHE(bld, 'TARGET_ALIAS')
     targets    = LOCAL_CACHE(bld, 'TARGET_TYPE')
 
-    for s in subsystems:
-        if s in aliases:
-            s = aliases[s]
-        bld.ASSERT(s in targets, "Subsystem target %s not declared" % s)
-        type = targets[s]
+    for subsystem_name in subsystem_list:
+        if subsystem_name in aliases:
+            subsystem_name = aliases[subsystem_name]
+        bld.ASSERT(subsystem_name in targets, "Subsystem target %s not declared" % subsystem_name)
+        type = targets[subsystem_name]
         if type == 'DISABLED' or type == 'EMPTY':
             continue
 
-        t = bld.name_to_obj(s, bld.env)
-        for d in subsystems[s]:
-            type = targets[d['TARGET']]
-            if type != 'DISABLED' and type != 'EMPTY':
-                bld.ASSERT(t is not None,
-                    "Subsystem target %s for %s (%s) not found" % (s, d['TARGET'], type))
-                t.samba_deps_extended.append(d['TARGET'])
-                t2 = bld.name_to_obj(d['TARGET'], bld.env)
-                t2.samba_includes_extended.extend(t.samba_includes_extended)
-                t2.samba_deps_extended.extend(t.samba_deps_extended)
-        t.samba_deps_extended = unique_list(t.samba_deps_extended)
+        # for example,
+        #    subsystem_name = dcerpc_server (a subsystem)
+        #    subsystem      = dcerpc_server (a subsystem object)
+        #    module_name    = rpc_epmapper (a module within the dcerpc_server subsystem)
+        #    module         = rpc_epmapper (a module object within the dcerpc_server subsystem)
+
+        subsystem = bld.name_to_obj(subsystem_name, bld.env)
+        for d in subsystem_list[subsystem_name]:
+            module_name = d['TARGET']
+            module_type = targets[module_name]
+            if module_type in ['DISABLED', 'EMPTY']:
+                continue
+            bld.ASSERT(subsystem is not None,
+                       "Subsystem target %s for %s (%s) not found" % (subsystem_name, module_name, module_type))
+            if module_type in ['SUBSYSTEM']:
+                # if a module is a plain object type (not a library) then the
+                # subsystem it is part of needs to have it as a dependency, so targets
+                # that depend on this subsystem get the modules of that subsystem
+                subsystem.samba_deps_extended.append(module_name)
+            module = bld.name_to_obj(module_name, bld.env)
+            module.samba_includes_extended.extend(subsystem.samba_includes_extended)
+            if targets[subsystem_name] in ['SUBSYSTEM']:
+                # if a subsystem is a plain object type (not a library) then any modules
+                # in that subsystem need to depend on the subsystem
+                module.samba_deps_extended.extend(subsystem.samba_deps_extended)
+        subsystem.samba_deps_extended = unique_list(subsystem.samba_deps_extended)
 
 
 
@@ -360,20 +378,58 @@ def add_samba_attributes(bld, tgt_list):
         t.samba_includes_extended = TO_LIST(t.samba_includes)[:]
         t.ccflags = getattr(t, 'samba_cflags', '')
 
+def replace_grouping_libraries(bld, tgt_list):
+    '''replace dependencies based on grouping libraries
+
+    If a library is marked as a grouping library, then any target that
+    depends on a subsystem that is part of that grouping library gets
+    that dependency replaced with a dependency on the grouping library
+    '''
+
+    targets  = LOCAL_CACHE(bld, 'TARGET_TYPE')
+
+    grouping = {}
+
+    # find our list of grouping libraries, mapped from the subsystems they depend on
+    for t in tgt_list:
+        if not getattr(t, 'grouping_library', False):
+            continue
+        for dep in t.samba_deps_extended:
+            if targets[dep] == 'SUBSYSTEM':
+                grouping[dep] = t.sname
+
+    # now replace any dependencies on elements of grouping libraries
+    for t in tgt_list:
+        for i in range(len(t.samba_deps_extended)):
+            dep = t.samba_deps_extended[i]
+            if dep in grouping:
+                if t.sname != grouping[dep]:
+                    debug("deps: target %s: replacing dependency %s with grouping library %s" % (t.sname, dep, grouping[dep]))
+                    t.samba_deps_extended[i] = grouping[dep]
+
+
 
 def build_direct_deps(bld, tgt_list):
     '''build the direct_objects and direct_libs sets for each target'''
 
     targets  = LOCAL_CACHE(bld, 'TARGET_TYPE')
     syslib_deps  = LOCAL_CACHE(bld, 'SYSLIB_DEPS')
+
     global_deps = bld.env.GLOBAL_DEPENDENCIES
+    global_deps_exclude = set()
+    for dep in global_deps:
+        t = bld.name_to_obj(dep, bld.env)
+        for d in t.samba_deps:
+            # prevent loops from the global dependencies list
+            global_deps_exclude.add(d)
+            global_deps_exclude.add(d + '.objlist')
 
     for t in tgt_list:
         t.direct_objects = set()
         t.direct_libs = set()
         t.direct_syslibs = set()
-        deps = t.samba_deps_extended
-        if getattr(t, 'samba_use_global_deps', False):
+        deps = t.samba_deps_extended[:]
+        if getattr(t, 'samba_use_global_deps', False) and not t.sname in global_deps_exclude:
             deps.extend(global_deps)
         for d in deps:
             d = EXPAND_ALIAS(bld, d)
@@ -383,6 +439,11 @@ def build_direct_deps(bld, tgt_list):
                 sys.exit(1)
             if targets[d] in [ 'EMPTY', 'DISABLED' ]:
                 continue
+            if targets[d] == 'PYTHON' and targets[t.sname] != 'PYTHON' and t.sname.find('.objlist') == -1:
+                # this check should be more restrictive, but for now we have pidl-generated python
+                # code that directly depends on other python modules
+                Logs.error('ERROR: Target %s has dependency on python module %s' % (t.sname, d))
+                sys.exit(1)
             if targets[d] == 'SYSLIB':
                 t.direct_syslibs.add(d)
                 if d in syslib_deps:
@@ -614,7 +675,7 @@ def break_dependency_loops(bld, tgt_list):
     # add in the replacement dependencies
     for t in tgt_list:
         for loop in loops:
-            for attr in ['direct_objects', 'indirect_objects', 'direct_libs', 'indirect_libs']:
+            for attr in ['indirect_objects', 'indirect_libs']:
                 objs = getattr(t, attr, set())
                 if loop in objs:
                     diff = loops[loop].difference(objs)
@@ -792,11 +853,66 @@ def calculate_final_deps(bld, tgt_list, loops):
     debug('deps: removed duplicate dependencies')
 
 
+def show_dependencies(bld, target, seen):
+    '''recursively show the dependencies of target'''
+
+    if target in seen:
+        return
+
+    t = bld.name_to_obj(target, bld.env)
+    if t is None:
+        Logs.error("ERROR: Unable to find target '%s'" % target)
+        sys.exit(1)
+
+    Logs.info('%s(OBJECTS): %s' % (target, t.direct_objects))
+    Logs.info('%s(LIBS): %s' % (target, t.direct_libs))
+    Logs.info('%s(SYSLIBS): %s' % (target, t.direct_syslibs))
+
+    seen.add(target)
+
+    for t2 in t.direct_objects:
+        show_dependencies(bld, t2, seen)
+
+
+def show_object_duplicates(bld, tgt_list):
+    '''show a list of object files that are included in more than
+    one library or binary'''
+
+    targets = LOCAL_CACHE(bld, 'TARGET_TYPE')
+
+    used_by = {}
+
+    Logs.info("showing duplicate objects")
+
+    for t in tgt_list:
+        if not targets[t.sname] in [ 'LIBRARY', 'PYTHON' ]:
+            continue
+        for n in getattr(t, 'final_objects', set()):
+            t2 = bld.name_to_obj(n, bld.env)
+            if not n in used_by:
+                used_by[n] = set()
+            used_by[n].add(t.sname)
+
+    for n in used_by:
+        if len(used_by[n]) > 1:
+            Logs.info("target '%s' is used by %s" % (n, used_by[n]))
+
+    Logs.info("showing indirect dependency counts (sorted by count)")
+
+    def indirect_count(t1, t2):
+        return len(t2.indirect_objects) - len(t1.indirect_objects)
+
+    sorted_list = sorted(tgt_list, cmp=indirect_count)
+    for t in sorted_list:
+        if len(t.indirect_objects) > 1:
+            Logs.info("%s depends on %u indirect objects" % (t.sname, len(t.indirect_objects)))
+
+
 ######################################################################
 # this provides a way to save our dependency calculations between runs
 savedeps_version = 3
-savedeps_inputs  = ['samba_deps', 'samba_includes', 'local_include', 'local_include_first', 'samba_cflags', 'source']
-savedeps_outputs = ['uselib', 'uselib_local', 'add_objects', 'includes', 'ccflags']
+savedeps_inputs  = ['samba_deps', 'samba_includes', 'local_include', 'local_include_first', 'samba_cflags', 'source', 'grouping_library']
+savedeps_outputs = ['uselib', 'uselib_local', 'add_objects', 'includes', 'ccflags', 'ldflags']
 savedeps_outenv  = ['INC_PATHS']
 savedeps_envvars = ['NONSHARED_BINARIES', 'GLOBAL_DEPENDENCIES']
 savedeps_caches  = ['GLOBAL_DEPENDENCIES', 'TARGET_ALIAS', 'TARGET_TYPE', 'INIT_FUNCTIONS', 'SYSLIB_DEPS']
@@ -943,7 +1059,10 @@ def check_project_rules(bld):
 
     add_samba_attributes(bld, tgt_list)
 
-    if load_samba_deps(bld, tgt_list):
+    force_project_rules = (Options.options.SHOWDEPS or
+                           Options.options.SHOW_DUPLICATES)
+
+    if not force_project_rules and load_samba_deps(bld, tgt_list):
         return
 
     bld.new_rules = True    
@@ -952,10 +1071,19 @@ def check_project_rules(bld):
     debug('deps: project rules checking started')
 
     expand_subsystem_deps(bld)
+    replace_grouping_libraries(bld, tgt_list)
     build_direct_deps(bld, tgt_list)
+
     break_dependency_loops(bld, tgt_list)
+
+    if Options.options.SHOWDEPS:
+            show_dependencies(bld, Options.options.SHOWDEPS, set())
+
     calculate_final_deps(bld, tgt_list, loops)
 
+    if Options.options.SHOW_DUPLICATES:
+            show_object_duplicates(bld, tgt_list)
+
     # run the various attribute generators
     for f in [ build_dependencies, build_includes, add_init_functions ]:
         debug('deps: project rules checking %s', f)
diff --git a/buildtools/wafsamba/samba_install.py b/buildtools/wafsamba/samba_install.py
index eaeaff3..56e979e 100644
--- a/buildtools/wafsamba/samba_install.py
+++ b/buildtools/wafsamba/samba_install.py
@@ -95,7 +95,7 @@ def install_library(self):
         install_name = bld.make_libname(self.target, version=self.vnum)
         install_link = bld.make_libname(self.target, version=vnum_base)
         inst_name    = bld.make_libname(t.target)
-        if not self.is_bundled:
+        if not self.private_library:
             # only generate the dev link for non-bundled libs
             dev_link     = bld.make_libname(self.target)
     else:
diff --git a/buildtools/wafsamba/samba_utils.py b/buildtools/wafsamba/samba_utils.py
index e86056e..4139aa1 100644
--- a/buildtools/wafsamba/samba_utils.py
+++ b/buildtools/wafsamba/samba_utils.py
@@ -533,6 +533,9 @@ def map_shlib_extension(ctx, name, python=False):
     '''map a filename with a shared library extension of .so to the real shlib name'''
     if name is None:
         return None
+    if name[-1:].isdigit():
+        # some libraries have specified versions in the wscript rule
+        return name
     (root1, ext1) = os.path.splitext(name)
     if python:
         (root2, ext2) = os.path.splitext(ctx.env.pyext_PATTERN)
diff --git a/buildtools/wafsamba/wafsamba.py b/buildtools/wafsamba/wafsamba.py
index e848d39..7108715 100644
--- a/buildtools/wafsamba/wafsamba.py
+++ b/buildtools/wafsamba/wafsamba.py
@@ -108,14 +108,16 @@ def SAMBA_LIBRARY(bld, libname, source,
                   install_path=None,
                   install=True,
                   pyembed=False,
+                  pyext=False,
                   target_type='LIBRARY',
                   bundled_extension=True,
                   link_name=None,
                   abi_file=None,
                   abi_match=None,
                   hide_symbols=False,
-                  is_bundled=False,
                   manpages=None,
+                  private_library=False,
+                  grouping_library=False,
                   enabled=True):
     '''define a Samba library'''
 
@@ -150,7 +152,7 @@ def SAMBA_LIBRARY(bld, libname, source,
                         autoproto      = autoproto,
                         depends_on     = depends_on,
                         hide_symbols   = hide_symbols,
-                        pyext          = (target_type == "PYTHON"),
+                        pyext          = pyext or (target_type == "PYTHON"),
                         local_include  = local_include)
 
     if BUILTIN_LIBRARY(bld, libname):
@@ -167,18 +169,24 @@ def SAMBA_LIBRARY(bld, libname, source,
     realname = bld.map_shlib_extension(realname, python=(target_type=='PYTHON'))
     link_name = bld.map_shlib_extension(link_name, python=(target_type=='PYTHON'))
 
-    if target_type == 'PYTHON' or realname or not is_bundled:
+    # we don't want any public libraries without version numbers
+    if not private_library and vnum is None and target_type != 'PYTHON' and not realname:
+        raise Utils.WafError("public library '%s' must have a vnum" % libname)
+
+    if target_type == 'PYTHON' or realname or not private_library:
         # Sanitize the library name
         bundled_name = libname.lower().replace('_', '-')
         while bundled_name.startswith("lib"):
             bundled_name = bundled_name[3:]
     else:
-        bundled_name = BUNDLED_NAME(bld, libname, bundled_extension)
+        bundled_name = BUNDLED_NAME(bld, libname, bundled_extension, private_library)
 
     features = 'cc cshlib symlink_lib install_lib'
     if target_type == 'PYTHON':
         features += ' pyext'
-    if pyembed:
+    if pyext or pyembed:
+        # this is quite strange. we should add pyext feature for pyext
+        # but that breaks the build. This may be a bug in the waf python tool
         features += ' pyembed'
     if abi_file:
         features += ' abi_check'
@@ -191,7 +199,6 @@ def SAMBA_LIBRARY(bld, libname, source,
         features        = features,
         source          = [],
         target          = bundled_name,
-        samba_cflags    = CURRENT_LDFLAGS(bld, libname, cflags),
         depends_on      = depends_on,
         samba_deps      = deps,
         samba_includes  = includes,
@@ -204,7 +211,8 @@ def SAMBA_LIBRARY(bld, libname, source,
         samba_install   = install,
         abi_file        = abi_file,
         abi_match       = abi_match,
-        is_bundled      = is_bundled
+        private_library = private_library,
+        grouping_library=grouping_library
         )
 
     if realname and not link_name:
@@ -289,7 +297,6 @@ def SAMBA_BINARY(bld, binname, source,
         features       = features,
         source         = [],
         target         = binname,
-        samba_cflags   = CURRENT_LDFLAGS(bld, binname, cflags),
         samba_deps     = deps,
         samba_includes = includes,
         local_include  = local_include,
@@ -354,40 +361,70 @@ def SAMBA_MODULE(bld, modname, source,
         SET_TARGET_TYPE(bld, modname, 'DISABLED')
         return
 
-    modnames = [modname] + TO_LIST(aliases)
-    for modname in modnames:
-        obj_target = modname + '.objlist'
-
-        realname = modname
-        if subsystem is not None:
-            deps += ' ' + subsystem
-            while realname.startswith("lib"+subsystem+"_"):
-                realname = realname[len("lib"+subsystem+"_"):]
-            while realname.startswith(subsystem+"_"):
-                realname = realname[len(subsystem+"_"):]
-
-        realname = bld.make_libname(realname)
-        while realname.startswith("lib"):
-            realname = realname[len("lib"):]
-
-        build_link_name = "modules/%s/%s" % (subsystem, realname)
-
+    if aliases is not None:
+        # if we have aliases, then create a private base library, and a set
+        # of modules on top of that library
         if init_function:
             cflags += " -D%s=samba_init_module" % init_function
 
-        bld.SAMBA_LIBRARY(modname,
+        basename = modname + '-base'
+        bld.SAMBA_LIBRARY(basename,
                           source,
                           deps=deps,
                           cflags=cflags,
-                          realname = realname,
                           autoproto = autoproto,
                           local_include=local_include,
                           vars=vars,
-                          link_name=build_link_name,
-                          install_path="${MODULESDIR}/%s" % subsystem,
                           pyembed=pyembed,
+                          private_library=True
                           )
 
+        aliases = TO_LIST(aliases)
+        aliases.append(modname)
+
+        for alias in aliases:
+            bld.SAMBA_MODULE(alias,
+                             source=[],
+                             internal_module=False,
+                             subsystem=subsystem,
+                             init_function=init_function,
+                             deps=basename)
+        return
+
+
+    obj_target = modname + '.objlist'
+
+    realname = modname
+    if subsystem is not None:


-- 
Samba Shared Repository


More information about the samba-cvs mailing list