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 <tri...@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 <tri...@samba.org> Autobuild-Date: Thu Oct 21 08:45:49 UTC 2010 on sn-devel-104 commit 6fd9fee502067dd2e864ebfce50302af062ee2d6 Author: Andrew Tridgell <tri...@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 <abart...@samba.org> commit 19f8dc9580a772620a39b09585e8c7f8f5deac13 Author: Andrew Tridgell <tri...@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 <tri...@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 <tri...@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 <tri...@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 <tri...@samba.org> Date: Thu Oct 21 17:36:15 2010 +1100 s4-librpc: fixed depenencies for libcli/security Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit d98effffe4857765b6a8851d96af3fc73ac1801b Author: Andrew Tridgell <tri...@samba.org> Date: Thu Oct 21 17:34:55 2010 +1100 libcli: LIBSECURITY depends on NDR_SECURITY Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit 171158482175f7ff6187c7535385e83ac28a086e Author: Andrew Tridgell <tri...@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 <tri...@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 <abart...@samba.org> commit 56640a8501625d29745269fcddc1980c6b751a2a Author: Andrew Tridgell <tri...@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 <abart...@samba.org> commit 1748d10e47c1000c56594a103c35b7962b5a5da2 Author: Andrew Tridgell <tri...@samba.org> Date: Thu Oct 21 17:11:20 2010 +1100 s4-python: python_samba needs pyext commit 51dc322f6314cd94eb2bfc72d2c83fb8a55a1134 Author: Andrew Tridgell <tri...@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 <abart...@samba.org> commit cef53b289b28e208602e34cfe8c93e05102bdc29 Author: Andrew Tridgell <tri...@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 <abart...@samba.org> commit 11bce8ce0334d2c903962fe901a34ff45bb150e8 Author: Andrew Tridgell <tri...@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 <abart...@samba.org> commit bbe016b77c6fd08e66a099e012c365103410d0e0 Author: Andrew Tridgell <tri...@samba.org> Date: Thu Oct 21 15:26:38 2010 +1100 s4-ldb: make pyldb_util a private library Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit 4af59515f61e43d0e59f58942cc60d1a0de5d28d Author: Andrew Tridgell <tri...@samba.org> Date: Thu Oct 21 15:26:20 2010 +1100 librpc: added RPC_NDR_SAMBA grouping library Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit 1cbb6150a146ec94ec5f95ae6a5666ea546d3693 Author: Andrew Tridgell <tri...@samba.org> Date: Thu Oct 21 15:26:00 2010 +1100 lib: make WRAP_XATTR a private library Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit ec7bb906db95e77b78310f5e2c3e584e5d6de59c Author: Andrew Tridgell <tri...@samba.org> Date: Thu Oct 21 15:25:44 2010 +1100 waf: added pyext option to SAMBA_LIBRARY() Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit f7aca49e20df34e463f7447d02bc11f6d2095cf9 Author: Andrew Tridgell <tri...@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 <abart...@samba.org> commit af36485ae54b2a9a1263468ec4388423ccb3588b Author: Andrew Tridgell <tri...@samba.org> Date: Thu Oct 21 14:57:34 2010 +1100 s4-python: added a samba_python grouping library Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit 19bae689c108ff1f85ee5ce147aa54a9d28f5f30 Author: Andrew Tridgell <tri...@samba.org> Date: Thu Oct 21 14:56:59 2010 +1100 s4-param: added a libshares grouping library Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit 62d7b2780807a72e7ae5bb53d65e564f0096ace3 Author: Andrew Tridgell <tri...@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 <tri...@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 <abart...@samba.org> commit b4dd1accc8178bed96ab8606dc655d30826886e6 Author: Andrew Tridgell <tri...@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 <abart...@samba.org> commit 3981399957a8f2d608adb33e9ced1c50bcb1f5dc Author: Andrew Tridgell <tri...@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 <abart...@samba.org> commit 6f36a015b1975a9ea027da8cf009cd38f074d77f Author: Andrew Tridgell <tri...@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 <tri...@samba.org> Date: Thu Oct 21 13:52:15 2010 +1100 s4-libcli: make LIBSECURITY_SESSION a private library commit 4b3fae6ca8ed29b7c74edf589de678418cb3481a Author: Andrew Tridgell <tri...@samba.org> Date: Thu Oct 21 13:51:55 2010 +1100 s4-socket: make LIBNETIF a private library commit aa0dbdc5b11a0efa46ff540d99875690c6244c25 Author: Andrew Tridgell <tri...@samba.org> Date: Thu Oct 21 13:51:40 2010 +1100 s4-events: make LIBEVENTS a private library commit 7c92baf0dc8e6c4dacfec07e22c4552d0d5ee118 Author: Andrew Tridgell <tri...@samba.org> Date: Thu Oct 21 13:51:21 2010 +1100 s4-kdc: make DB_GLUE a private library commit ae5c4cd6f9da3157acfb90dcb296aefd8e7f1e1e Author: Andrew Tridgell <tri...@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 <tri...@samba.org> Date: Thu Oct 21 13:50:13 2010 +1100 nsswitch: make LIBWINBIND-CLIENT a private library commit 0b255c0da6d4c97ad8d733c8632fa8472bd47b5e Author: Andrew Tridgell <tri...@samba.org> Date: Thu Oct 21 13:49:55 2010 +1100 nsswitch: make LIBWBCLIENT a private library commit 6c60b8be03c195c06301b04a656ff1281be2eb09 Author: Andrew Tridgell <tri...@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 <abart...@samba.org> commit 5ecd87230e2a83f7925b519c596ddecb89674577 Author: Andrew Tridgell <tri...@samba.org> Date: Thu Oct 21 12:57:56 2010 +1100 s4-libcli: make LIBSAMBA-ERRORS a private library Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit 6ba86d8ca31635b16670c59e645ceacdb256c054 Author: Andrew Tridgell <tri...@samba.org> Date: Thu Oct 21 12:57:36 2010 +1100 s4-lib: make SMBPASSWD a private library Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit 47591ea5ec03916393d22484e3b551da033260ea Author: Andrew Tridgell <tri...@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 <abart...@samba.org> Pair-Programmed-With: Kamen Mazdrashki <kame...@samba.org> commit cffbccb5cb0046bc9713de5d5a89d7f8236888f4 Author: Andrew Tridgell <tri...@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 <abart...@samba.org> commit acffaf2bfb5d78c756224fe36e5667ce79b67f71 Author: Andrew Tridgell <tri...@samba.org> Date: Thu Oct 21 11:28:58 2010 +1100 s4-build: make LIBSAMBA-NET a private library Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit 9bc47cc4557c856b2095ffe709351ab3173b9783 Author: Andrew Tridgell <tri...@samba.org> Date: Thu Oct 21 11:28:27 2010 +1100 waf-build: create a NDR_SAMBA grouping library Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit f39b21008f578fa2cf91e2cdc9ebc0ca15100e9a Author: Andrew Tridgell <tri...@samba.org> Date: Thu Oct 21 11:28:05 2010 +1100 waf-build: create a samba_sockets grouping library Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit 2dcb596e8302856a66e8d6f11457ad87d1ad1dab Author: Andrew Tridgell <tri...@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 <tri...@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 <tri...@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 <abart...@samba.org> commit 713900b81297548c44a890c3bca1dde9019af8bc Author: Andrew Tridgell <tri...@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 <tri...@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 <tri...@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 <tri...@samba.org> Date: Thu Oct 21 08:30:55 2010 +1100 s4-libcli: make LIBCLI_LDAP a private library Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit e73739a338fd2586e64a6c892e6f798c08b31a22 Author: Andrew Tridgell <tri...@samba.org> Date: Thu Oct 21 08:30:39 2010 +1100 s4-auth: make auth a private library Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit a913e79ee52fa21b9d7469a497fc8f63571fc913 Author: Andrew Tridgell <tri...@samba.org> Date: Thu Oct 21 08:30:15 2010 +1100 replace: make libreplace a private library Pair-Programmed-With: Andrew Bartlett <abart...@samba.org> commit 0ad5937b4e353f9dd026cbf6a9555afbedc7ca39 Author: Andrew Tridgell <tri...@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 <abart...@samba.org> commit 35b61c23650da1ec971ffd37c534fc82903b9940 Author: Andrew Tridgell <tri...@samba.org> Date: Thu Oct 21 08:28:35 2010 +1100 libcli: make LIBCLI_NBT a private library commit dc00b773fc67ff55567e3c159749f1e55f4a5b1f Author: Andrew Tridgell <tri...@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 <abart...@samba.org> commit 29c0b86126c2eb4e5c921f63b10e796bce647e1a Author: Andrew Tridgell <tri...@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 <abart...@samba.org> commit 9a2c9c2fc264627494b16923f3055d4aa09ae835 Author: Andrew Tridgell <tri...@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 <abart...@samba.org> commit 8709c3c0f2695b199bb63fee27c6ae054d665209 Author: Andrew Tridgell <tri...@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 <abart...@samba.org> commit e596a4e6c3598d0045c330a595bd0a05b6c33bb7 Author: Andrew Tridgell <tri...@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 <tri...@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 <abart...@samba.org> commit c0878cfb615d35fc3a62e45fa9ecab7f178ecb3c Author: Andrew Tridgell <tri...@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 <abart...@samba.org> commit 14081efcc07e02a479ed3121a2359b9dd766a378 Author: Andrew Tridgell <tri...@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) +...@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