The branch, master has been updated via 096d3807b05 build: Make "samba4" public libraries provided (mostly) for OpenChange private via d11b281aefa build: Remove incorrect pyembed=True from samba-policy via 829b52f99d5 s4-libnet: Split up samba-net into samba-net and samba-net-join from a54dca4ea54 tests/krb5: Calculate correct gMSA password to fix flapping test
https://git.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 096d3807b0588ed4d03bd99bc96163a4821ec010 Author: Andrew Bartlett <abart...@samba.org> Date: Mon May 27 09:24:13 2024 +1200 build: Make "samba4" public libraries provided (mostly) for OpenChange private These libraries, mostly with ABI versions of 0.0.1 were made public in the early development of Samba4 and have not been seriously considered since. Most are to allow OpenChange to build. While the OpenChange server is no longer actively used, the MAPI client is used and we need to allow packages to be built that will allow the Evolution MAPI client to still work. Some appear to be mistakes (dcerpc-samr), historical abberations (tevent-util) or ideas that did not go very far (the samba-policy library for example). To allow any remaining users to access them, they are not made private in the build system but are instead listed so that they can be made public again via ./configure with the same --private-libraries='!LIB' syntax introduced to make ldb private by default. Signed-off-by: Andrew Bartlett <abart...@samba.org> Reviewed-by: Alexander Bokovoy <a...@samba.org> Autobuild-User(master): Andrew Bartlett <abart...@samba.org> Autobuild-Date(master): Wed Jun 5 21:47:24 UTC 2024 on atb-devel-224 commit d11b281aefa98e6850053ccd6142253c6cf0d04f Author: Andrew Bartlett <abart...@samba.org> Date: Mon May 27 07:28:33 2024 +1200 build: Remove incorrect pyembed=True from samba-policy This is a normal C library, used by python but does not use any python itself (nor by dependencies any longer). Signed-off-by: Andrew Bartlett <abart...@samba.org> Reviewed-by: Alexander Bokovoy <a...@samba.org> commit 829b52f99d5a9c9df19c9eb67611618095967edd Author: Andrew Bartlett <abart...@samba.org> Date: Mon May 27 19:44:38 2024 +1200 s4-libnet: Split up samba-net into samba-net and samba-net-join samba-net-join links to python and so needs the variable name with the python ABI tag, while samba-net is a normal C library and can be included in a package without python dependencies. Signed-off-by: Andrew Bartlett <abart...@samba.org> Reviewed-by: Alexander Bokovoy <a...@samba.org> ----------------------------------------------------------------------- Summary of changes: WHATSNEW.txt | 21 +++++++++++++++++++++ source4/lib/policy/wscript_build | 13 ++++--------- source4/libnet/libnet_join.c | 1 + source4/libnet/libnet_vampire.c | 1 + source4/libnet/py_net.c | 1 + source4/libnet/wscript_build | 23 +++++++++++++++-------- source4/torture/libnet/libnet_BecomeDC.c | 1 + source4/torture/rpc/testjoin.c | 1 + source4/torture/wscript_build | 6 +++--- wscript | 20 +++++++++++++++++++- 10 files changed, 67 insertions(+), 21 deletions(-) Changeset truncated at 500 lines: diff --git a/WHATSNEW.txt b/WHATSNEW.txt index 67bdb963cca..6d1368c42b1 100644 --- a/WHATSNEW.txt +++ b/WHATSNEW.txt @@ -69,6 +69,27 @@ never took into account later changes, and so has not worked for a number of years. Samba 4.21 and LDB 2.10 removes this unused and broken feature. +Some Samba public libraries made private by default +--------------------------------------------------- + +The following Samba C libraries are currently made public due to their +use by OpenChange or for historical reasons that are no longer clear. + + dcerpc-samr, samba-policy, tevent-util, dcerpc, samba-hostconfig, + samba-credentials, dcerpc_server, samdb + +The libraries used by the OpenChange client now private, but can be +made public (like ldb above) with: + + ./configure --private-libraries='!dcerpc,!samba-hostconfig,!samba-credentials,!ldb' + +The C libraries without any known user or used only for the OpenChange +server (a dead project) may be made private entirely in a future Samba +version. + +If you use a Samba library in this list, please be in touch with the +samba-technical mailing list. + Using ldaps from 'winbindd' and 'net ads' ----------------------------------------- diff --git a/source4/lib/policy/wscript_build b/source4/lib/policy/wscript_build index 027d4bef0b6..f7d9b555f6a 100644 --- a/source4/lib/policy/wscript_build +++ b/source4/lib/policy/wscript_build @@ -3,20 +3,15 @@ pytalloc_util = bld.pyembed_libname('pytalloc-util') -samba_policy = bld.pyembed_libname('samba-policy') -samba_net = bld.pyembed_libname('samba-net') -bld.SAMBA_LIBRARY(samba_policy, +bld.SAMBA_LIBRARY('samba-policy', source='gp_ldap.c gp_filesys.c gp_manage.c gp_ini.c', pc_files='samba-policy.pc', - public_deps='ldb %s' % samba_net, + public_deps='ldb samba-net', vnum='0.0.1', - pyembed=True, - public_headers='policy.h', - enabled=bld.PYTHON_BUILD_IS_ENABLED() - ) + public_headers='policy.h') bld.SAMBA_PYTHON( 'py_policy', source='pypolicy.c', - public_deps='%s %s' % (samba_policy, pytalloc_util), + public_deps=f'samba-policy {pytalloc_util}', realname='samba/policy.so' ) diff --git a/source4/libnet/libnet_join.c b/source4/libnet/libnet_join.c index d1afb4f22b9..e3d5e72fea1 100644 --- a/source4/libnet/libnet_join.c +++ b/source4/libnet/libnet_join.c @@ -21,6 +21,7 @@ #include "includes.h" #include "libnet/libnet.h" +#include "libnet/libnet_join_proto.h" #include "librpc/gen_ndr/ndr_drsuapi_c.h" #include <ldb.h> #include <ldb_errors.h> diff --git a/source4/libnet/libnet_vampire.c b/source4/libnet/libnet_vampire.c index 54bbbe36d8a..e29792f7db3 100644 --- a/source4/libnet/libnet_vampire.c +++ b/source4/libnet/libnet_vampire.c @@ -24,6 +24,7 @@ #include "includes.h" #include "libnet/libnet.h" +#include "libnet/libnet_join_proto.h" #include "lib/events/events.h" #include "dsdb/samdb/samdb.h" #include "../lib/util/dlinklist.h" diff --git a/source4/libnet/py_net.c b/source4/libnet/py_net.c index 071ad0481ec..4544d1d90aa 100644 --- a/source4/libnet/py_net.c +++ b/source4/libnet/py_net.c @@ -26,6 +26,7 @@ #include <pyldb.h> #include <pytalloc.h> #include "libnet.h" +#include "libnet_join_proto.h" #include "auth/credentials/pycredentials.h" #include "libcli/security/security.h" #include "lib/events/events.h" diff --git a/source4/libnet/wscript_build b/source4/libnet/wscript_build index 2dce60246c2..3f89af10434 100644 --- a/source4/libnet/wscript_build +++ b/source4/libnet/wscript_build @@ -4,21 +4,28 @@ pytalloc_util = bld.pyembed_libname('pytalloc-util') pyrpc_util = bld.pyembed_libname('pyrpc_util') pyldb_util = bld.pyembed_libname('pyldb-util') provision = bld.pyembed_libname('PROVISION') -name = bld.pyembed_libname('samba-net') +name = bld.pyembed_libname('samba-net-join') auto_proto='libnet_proto.h' -bld.SAMBA_LIBRARY(name, - source='libnet.c libnet_passwd.c libnet_time.c libnet_rpc.c libnet_join.c libnet_site.c libnet_become_dc.c libnet_unbecome_dc.c libnet_vampire.c libnet_user.c libnet_group.c libnet_share.c libnet_lookup.c libnet_domain.c userinfo.c groupinfo.c userman.c groupman.c prereq_domain.c', +bld.SAMBA_LIBRARY('samba-net', + source='libnet.c libnet_passwd.c libnet_time.c libnet_rpc.c libnet_site.c libnet_become_dc.c libnet_unbecome_dc.c libnet_user.c libnet_group.c libnet_share.c libnet_lookup.c libnet_domain.c userinfo.c groupinfo.c userman.c groupman.c prereq_domain.c', autoproto=auto_proto, deps='INIT_SAMR', - public_deps='samba-credentials dcerpc dcerpc-samr RPC_NDR_LSA RPC_NDR_SRVSVC RPC_NDR_DRSUAPI cli_composite LIBCLI_RESOLVE LIBCLI_FINDDCS cli_cldap LIBCLI_FINDDCS gensec_schannel LIBCLI_AUTH ndr smbpasswdparser %s LIBCLI_SAMSYNC LIBTSOCKET GNUTLS_HELPERS' % (provision), - private_library=True, - pyembed=True, - enabled=bld.PYTHON_BUILD_IS_ENABLED() + public_deps='samba-credentials dcerpc dcerpc-samr RPC_NDR_LSA RPC_NDR_SRVSVC RPC_NDR_DRSUAPI cli_composite LIBCLI_RESOLVE LIBCLI_FINDDCS cli_cldap LIBCLI_FINDDCS gensec_schannel LIBCLI_AUTH ndr smbpasswdparser LIBCLI_SAMSYNC LIBTSOCKET GNUTLS_HELPERS', + private_library=True ) +bld.SAMBA_LIBRARY(name, + source='libnet_join.c libnet_vampire.c', + autoproto='libnet_join_proto.h', + deps=f'samba-net {provision}', + private_library=True, + pyembed=True, + enabled=bld.PYTHON_BUILD_IS_ENABLED() + ) + bld.SAMBA_PYTHON('python_net', source='py_net.c', - deps='%s %s %s' % (name, pyrpc_util, pytalloc_util), + deps=f'samba-net {name} {pyrpc_util} {pytalloc_util}', realname='samba/net.so' ) diff --git a/source4/torture/libnet/libnet_BecomeDC.c b/source4/torture/libnet/libnet_BecomeDC.c index 45d386b079f..e88198daf2b 100644 --- a/source4/torture/libnet/libnet_BecomeDC.c +++ b/source4/torture/libnet/libnet_BecomeDC.c @@ -23,6 +23,7 @@ #include "lib/cmdline/cmdline.h" #include "torture/rpc/torture_rpc.h" #include "libnet/libnet.h" +#include "libnet/libnet_join_proto.h" #include "dsdb/samdb/samdb.h" #include "../lib/util/dlinklist.h" #include "librpc/gen_ndr/ndr_drsuapi.h" diff --git a/source4/torture/rpc/testjoin.c b/source4/torture/rpc/testjoin.c index 6fb5f8627a1..6cf0232d82e 100644 --- a/source4/torture/rpc/testjoin.c +++ b/source4/torture/rpc/testjoin.c @@ -27,6 +27,7 @@ #include "includes.h" #include "system/time.h" #include "libnet/libnet.h" +#include "libnet/libnet_join_proto.h" #include "lib/cmdline/cmdline.h" #include "librpc/gen_ndr/ndr_lsa_c.h" #include "librpc/gen_ndr/ndr_samr_c.h" diff --git a/source4/torture/wscript_build b/source4/torture/wscript_build index 59db9f8f7d7..b38a30c98da 100644 --- a/source4/torture/wscript_build +++ b/source4/torture/wscript_build @@ -1,7 +1,7 @@ #!/usr/bin/env python provision = bld.pyembed_libname('PROVISION') -samba_net = bld.pyembed_libname('samba-net') +samba_net_join = bld.pyembed_libname('samba-net-join') bld.SAMBA_SUBSYSTEM('TORTURE_UTIL', source='util_smb.c', @@ -189,7 +189,7 @@ bld.SAMBA_MODULE('torture_rpc', printer_driver RPC_NDR_MDSSVC mdssvc - ''' % samba_net + ntvfs_specific['deps'], + ''' % samba_net_join + ntvfs_specific['deps'], internal_module=True, enabled=bld.PYTHON_BUILD_IS_ENABLED()) @@ -284,7 +284,7 @@ bld.SAMBA_MODULE('TORTURE_NET', autoproto='libnet/proto.h', subsystem='smbtorture', init_function='torture_net_init', - deps='%s torture_rpc %s' % (provision, samba_net), + deps='%s torture_rpc %s' % (provision, samba_net_join), internal_module=True, enabled=bld.PYTHON_BUILD_IS_ENABLED() ) diff --git a/wscript b/wscript index 2959b083d47..be4f3122af6 100644 --- a/wscript +++ b/wscript @@ -16,7 +16,25 @@ from waflib.Tools import bison samba_dist.DIST_DIRS('.') samba_dist.DIST_BLACKLIST('.gitignore .bzrignore source4/selftest/provisions') -DEFAULT_PRIVATE_LIBS = ["ldb"] +# A function so the variables are not in global scope +def get_default_private_libs(): + # LDB is used by sssd (was made private by default in Samba 4.21) + SSSD_LIBS=["ldb"] + # These following libs without ABI checking were made private by default in Samba 4.21 + # Presumably unused (dcerpc-samr was probably a copy and paste error, + # and samba-policy has primary use via python bindings). tevent-util + # was for openchange but was for PIDL output that is no longer + # generated + POSSIBLY_UNUSED_LIBS=["dcerpc-samr","samba-policy","tevent-util"] + # These were used by mapiproxy in OpenChange (also used LDB and + # the real public libs tdb, talloc, tevent) + OPENCHANGE_SERVER_LIBS = ["dcerpc_server","samdb"] + # These (plus LDB, ndr, talloc, tevent) are used by the OpenChange + # client, which is still in use (Fedora/Red Hat packages it) + OPENCHANGE_LIBS = ["dcerpc","samba-hostconfig","samba-credentials"] + return SSSD_LIBS + POSSIBLY_UNUSED_LIBS + OPENCHANGE_LIBS + OPENCHANGE_SERVER_LIBS + +DEFAULT_PRIVATE_LIBS = get_default_private_libs() # install in /usr/local/samba by default default_prefix = Options.default_prefix = '/usr/local/samba' -- Samba Shared Repository