From 2b3d50055f285c84250390207c613eec17bf406e Mon Sep 17 00:00:00 2001 From: Gyorgy Sarvari Date: Thu, 5 Mar 2026 21:17:51 +0100 Subject: samba: upgrade 4.19.9 -> 4.23.5 Samba has a new build-time dependency, libquic[1]. The repository builds an out-of-tree kernel module and a regular userspace library with the same build script, however the Makefile seems to be fairly hostile to cross-compilation. The Samba tarball also vendors the same with their own build script - for now, this venodred version is used. There are some efforts that the kernel part is mainlined[2], once it happens it should be possible to easily remove this from the recipe. pyldb was removed from RDEPENDS, as it seems that samba now builds its own version of it. Patches updated, unneeded patches dropped. Some patches contained a considerable amount of whitespace changes - those were trimmed for the easy of rebasing. Changelog: https://gitlab.com/samba-team/samba/-/blob/samba-4.23.5/WHATSNEW.txt?ref_type=tags (Switch to other branches to see earlier changelogs) [1]: https://github.com/lxin/quic/ [2]: https://github.com/lxin/net-next/commits/quic/ Signed-off-by: Gyorgy Sarvari Signed-off-by: Khem Raj --- .../samba/0001-Don-t-check-xsltproc-manpages.patch | 19 +- .../0003-Add-config-option-without-valgrind.patch | 11 +- ...003-Replace-memset_s-with-memset_explicit.patch | 117 +------ ...dd-options-to-configure-the-use-of-libbsd.patch | 50 ++- .../samba/0004-lib-replace-Remove-memset_s.patch | 217 +----------- .../9aa5c43315d83c19514251a11c4fba5a137f2821.patch | 70 ---- .../recipes-connectivity/samba/samba_4.19.9.bb | 367 -------------------- .../recipes-connectivity/samba/samba_4.23.5.bb | 386 +++++++++++++++++++++ 8 files changed, 435 insertions(+), 802 deletions(-) delete mode 100644 meta-networking/recipes-connectivity/samba/samba/9aa5c43315d83c19514251a11c4fba5a137f2821.patch delete mode 100644 meta-networking/recipes-connectivity/samba/samba_4.19.9.bb create mode 100644 meta-networking/recipes-connectivity/samba/samba_4.23.5.bb diff --git a/meta-networking/recipes-connectivity/samba/samba/0001-Don-t-check-xsltproc-manpages.patch b/meta-networking/recipes-connectivity/samba/samba/0001-Don-t-check-xsltproc-manpages.patch index a498348c20..afa1154827 100644 --- a/meta-networking/recipes-connectivity/samba/samba/0001-Don-t-check-xsltproc-manpages.patch +++ b/meta-networking/recipes-connectivity/samba/samba/0001-Don-t-check-xsltproc-manpages.patch @@ -9,25 +9,14 @@ Signed-off-by: Bian Naimeng Rebase to 4.14.4 Signed-off-by: Yi Zhao + +Rebase to 4.23.5 +Signed-off-by: Gyorgy Sarvari --- - lib/ldb/wscript | 2 +- lib/talloc/wscript | 2 +- lib/tdb/wscript | 2 +- - 3 files changed, 3 insertions(+), 3 deletions(-) + 2 files changed, 2 insertions(+), 2 deletions(-) -diff --git a/lib/ldb/wscript b/lib/ldb/wscript -index ed5d45f..de3c648 100644 ---- a/lib/ldb/wscript -+++ b/lib/ldb/wscript -@@ -144,7 +144,7 @@ def configure(conf): - conf.DEFINE('EXPECTED_SYSTEM_LDB_VERSION_RELEASE', int(v[2])) - - if conf.env.standalone_ldb: -- conf.CHECK_XSLTPROC_MANPAGES() -+ #conf.CHECK_XSLTPROC_MANPAGES() - - # we need this for the ldap backend - if conf.CHECK_FUNCS_IN('ber_flush ldap_open ldap_initialize', 'lber ldap', headers='lber.h ldap.h'): diff --git a/lib/talloc/wscript b/lib/talloc/wscript index 075f1ec..9bd9f73 100644 --- a/lib/talloc/wscript diff --git a/meta-networking/recipes-connectivity/samba/samba/0003-Add-config-option-without-valgrind.patch b/meta-networking/recipes-connectivity/samba/samba/0003-Add-config-option-without-valgrind.patch index 2c9d29c9fe..70e7f28cc7 100644 --- a/meta-networking/recipes-connectivity/samba/samba/0003-Add-config-option-without-valgrind.patch +++ b/meta-networking/recipes-connectivity/samba/samba/0003-Add-config-option-without-valgrind.patch @@ -37,10 +37,10 @@ diff --git a/wscript b/wscript index 95ddd9e..6d9577a 100644 --- a/wscript +++ b/wscript -@@ -123,6 +123,13 @@ def options(opt): +@@ -131,6 +131,13 @@ help=('Disable kernely keyring support for credential storage'), action='store_false', dest='enable_keyring') - + + opt.add_option('--with-valgrind', + help=("Enable use of valgrind"), + action="store_true", dest='enable_valgrind') @@ -48,9 +48,6 @@ index 95ddd9e..6d9577a 100644 + help=("Disable use of valgrind"), + action="store_false", dest='enable_valgrind', default=False) + - gr = opt.option_group('developer options') - - opt.load('python') # options for disabling pyc or pyo compilation --- -2.25.1 + opt.samba_add_onoff_option('ldap') + opt.option_group('developer options') diff --git a/meta-networking/recipes-connectivity/samba/samba/0003-Replace-memset_s-with-memset_explicit.patch b/meta-networking/recipes-connectivity/samba/samba/0003-Replace-memset_s-with-memset_explicit.patch index a96cd062cd..74ea1a7ab4 100644 --- a/meta-networking/recipes-connectivity/samba/samba/0003-Replace-memset_s-with-memset_explicit.patch +++ b/meta-networking/recipes-connectivity/samba/samba/0003-Replace-memset_s-with-memset_explicit.patch @@ -15,7 +15,7 @@ Signed-off-by: Khem Raj --- a/lib/replace/replace.h +++ b/lib/replace/replace.h -@@ -815,50 +815,50 @@ typedef unsigned long long ptrdiff_t ; +@@ -811,50 +811,50 @@ typedef unsigned long long ptrdiff_t ; /** * Zero a structure. */ @@ -74,7 +74,7 @@ Signed-off-by: Khem Raj /** * Explicitly zero data in string. This is guaranteed to be not optimized -@@ -867,7 +867,7 @@ typedef unsigned long long ptrdiff_t ; +@@ -863,7 +863,7 @@ typedef unsigned long long ptrdiff_t ; #define BURN_STR(x) do { \ if ((x) != NULL) { \ size_t s = strlen(x); \ @@ -193,116 +193,3 @@ Signed-off-by: Khem Raj talloc_free(mem_ctx); } ---- a/lib/cmdline/cmdline.c -+++ b/lib/cmdline/cmdline.c -@@ -358,7 +358,7 @@ bool samba_cmdline_burn(int argc, char * - p += ulen; - } - -- memset_s(p, strlen(p), '\0', strlen(p)); -+ memset_explicit(p, '\0', strlen(p)); - burnt = true; - } - } ---- a/lib/util/data_blob.c -+++ b/lib/util/data_blob.c -@@ -1,19 +1,19 @@ --/* -+/* - Unix SMB/CIFS implementation. - Easy management of byte-length data - Copyright (C) Andrew Tridgell 2001 - Copyright (C) Andrew Bartlett 2001 -- -+ - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. -- -+ - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. -- -+ - You should have received a copy of the GNU General Public License - along with this program. If not, see . - */ -@@ -67,7 +67,7 @@ _PUBLIC_ DATA_BLOB data_blob_talloc_name - } - - /** -- construct a zero data blob, using supplied TALLOC_CTX. -+ construct a zero data blob, using supplied TALLOC_CTX. - use this sparingly as it initialises data - better to initialise - yourself if you want specific data in the blob - **/ -@@ -95,7 +95,7 @@ clear a DATA_BLOB's contents - _PUBLIC_ void data_blob_clear(DATA_BLOB *d) - { - if (d->data) { -- memset_s(d->data, d->length, 0, d->length); -+ memset_explicit(d->data, 0, d->length); - } - } - -@@ -219,7 +219,7 @@ _PUBLIC_ DATA_BLOB data_blob_string_cons - } - - /** -- * Create a new data blob from const data -+ * Create a new data blob from const data - */ - - _PUBLIC_ DATA_BLOB data_blob_const(const void *p, size_t length) -@@ -266,7 +266,7 @@ _PUBLIC_ bool data_blob_append(TALLOC_CT - if ((const uint8_t *)p + length < (const uint8_t *)p) { - return false; - } -- -+ - if (!data_blob_realloc(mem_ctx, blob, new_len)) { - return false; - } ---- a/lib/util/talloc_keep_secret.c -+++ b/lib/util/talloc_keep_secret.c -@@ -22,27 +22,13 @@ - - static int talloc_keep_secret_destructor(void *ptr) - { -- int ret; - size_t size = talloc_get_size(ptr); - - if (unlikely(size == 0)) { - return 0; - } - -- ret = memset_s(ptr, size, 0, size); -- if (unlikely(ret != 0)) { -- char *msg = NULL; -- int ret2; -- ret2 = asprintf(&msg, -- "talloc_keep_secret_destructor: memset_s() failed: %s", -- strerror(ret)); -- if (ret2 != -1) { -- smb_panic(msg); -- } else { -- smb_panic("talloc_keep_secret_destructor: memset_s() failed"); -- } -- } -- -+ memset_explicit(ptr, 0, size); - return 0; - } - ---- a/librpc/ndr/util.c -+++ b/librpc/ndr/util.c -@@ -32,5 +32,5 @@ _PUBLIC_ void ndr_print_sockaddr_storage - - _PUBLIC_ void ndr_zero_memory(void *ptr, size_t len) - { -- memset_s(ptr, len, 0, len); -+ memset_explicit(ptr, 0, len); - } diff --git a/meta-networking/recipes-connectivity/samba/samba/0004-Add-options-to-configure-the-use-of-libbsd.patch b/meta-networking/recipes-connectivity/samba/samba/0004-Add-options-to-configure-the-use-of-libbsd.patch index c72bd133ee..88acfeef07 100644 --- a/meta-networking/recipes-connectivity/samba/samba/0004-Add-options-to-configure-the-use-of-libbsd.patch +++ b/meta-networking/recipes-connectivity/samba/samba/0004-Add-options-to-configure-the-use-of-libbsd.patch @@ -19,7 +19,7 @@ diff --git a/buildtools/wafsamba/wscript b/buildtools/wafsamba/wscript index 30cb366..d167551 100644 --- a/buildtools/wafsamba/wscript +++ b/buildtools/wafsamba/wscript -@@ -145,6 +145,13 @@ Currently the only tested value is 'smbtorture,smbd/smbd' for Samba'''), +@@ -155,6 +155,13 @@ Currently the only tested value is 'smbtorture,smbd/smbd' for Samba'''), help=("Disable use of gettext"), action="store_true", dest='disable_gettext', default=False) @@ -37,40 +37,60 @@ diff --git a/lib/replace/wscript b/lib/replace/wscript index 9dd9b48..a22ae59 100644 --- a/lib/replace/wscript +++ b/lib/replace/wscript -@@ -444,20 +444,21 @@ def configure(conf): - +@@ -444,31 +444,32 @@ + strlcpy_in_bsd = False - + - # libbsd on some platforms provides strlcpy and strlcat - if not conf.CHECK_FUNCS('strlcpy strlcat'): - if conf.CHECK_FUNCS_IN('strlcpy strlcat', 'bsd', headers='bsd/string.h', - checklibc=True): - strlcpy_in_bsd = True -- if not conf.CHECK_FUNCS('getpeereid'): -- conf.CHECK_FUNCS_IN('getpeereid', 'bsd', headers='sys/types.h bsd/unistd.h') -- if not conf.CHECK_FUNCS_IN('setproctitle', 'setproctitle', headers='setproctitle.h'): -- conf.CHECK_FUNCS_IN('setproctitle', 'bsd', headers='sys/types.h bsd/unistd.h') -- if not conf.CHECK_FUNCS('setproctitle_init'): -- conf.CHECK_FUNCS_IN('setproctitle_init', 'bsd', headers='sys/types.h bsd/unistd.h') -- -- if not conf.CHECK_FUNCS('closefrom'): -- conf.CHECK_FUNCS_IN('closefrom', 'bsd', headers='bsd/unistd.h') +- elif conf.env.enable_fuzzing: +- # Just to complicate it more, some versions of Honggfuzz have +- # got strlcpy and strlcat in libc, but not in +- # (unless it is there coincidentally, on a BSD). Therefore we +- # can't use CHECK_FUNCS alone to decide whether to add the +- # headers to replace.h. +- # +- # As this is only known to happen on a fuzzing compiler, we'll +- # skip the check when not in fuzzing mode. +- conf.CHECK_HEADERS('bsd/string.h') + if Options.options.enable_libbsd: + # libbsd on some platforms provides strlcpy and strlcat + if not conf.CHECK_FUNCS('strlcpy strlcat'): + if conf.CHECK_FUNCS_IN('strlcpy strlcat', 'bsd', headers='bsd/string.h', + checklibc=True): + strlcpy_in_bsd = True ++ elif conf.env.enable_fuzzing: ++ # Just to complicate it more, some versions of Honggfuzz have ++ # got strlcpy and strlcat in libc, but not in ++ # (unless it is there coincidentally, on a BSD). Therefore we ++ # can't use CHECK_FUNCS alone to decide whether to add the ++ # headers to replace.h. ++ # ++ # As this is only known to happen on a fuzzing compiler, we'll ++ # skip the check when not in fuzzing mode. ++ conf.CHECK_HEADERS('bsd/string.h') + +- if not conf.CHECK_FUNCS('getpeereid'): +- conf.CHECK_FUNCS_IN('getpeereid', 'bsd', headers='sys/types.h bsd/unistd.h') +- if not conf.CHECK_FUNCS_IN('setproctitle', 'setproctitle', headers='setproctitle.h'): +- conf.CHECK_FUNCS_IN('setproctitle', 'bsd', headers='sys/types.h bsd/unistd.h') +- if not conf.CHECK_FUNCS('setproctitle_init'): +- conf.CHECK_FUNCS_IN('setproctitle_init', 'bsd', headers='sys/types.h bsd/unistd.h') + if not conf.CHECK_FUNCS('getpeereid'): + conf.CHECK_FUNCS_IN('getpeereid', 'bsd', headers='sys/types.h bsd/unistd.h') + if not conf.CHECK_FUNCS_IN('setproctitle', 'setproctitle', headers='setproctitle.h'): + conf.CHECK_FUNCS_IN('setproctitle', 'bsd', headers='sys/types.h bsd/unistd.h') + if not conf.CHECK_FUNCS('setproctitle_init'): + conf.CHECK_FUNCS_IN('setproctitle_init', 'bsd', headers='sys/types.h bsd/unistd.h') -+ + +- if not conf.CHECK_FUNCS('closefrom'): +- conf.CHECK_FUNCS_IN('closefrom', 'bsd', headers='bsd/unistd.h') + if not conf.CHECK_FUNCS('closefrom'): + conf.CHECK_FUNCS_IN('closefrom', 'bsd', headers='bsd/unistd.h') - + conf.CHECK_CODE(''' struct ucred cred; diff --git a/lib/texpect/wscript b/lib/texpect/wscript diff --git a/meta-networking/recipes-connectivity/samba/samba/0004-lib-replace-Remove-memset_s.patch b/meta-networking/recipes-connectivity/samba/samba/0004-lib-replace-Remove-memset_s.patch index 409c36da7c..6e01ae35e7 100644 --- a/meta-networking/recipes-connectivity/samba/samba/0004-lib-replace-Remove-memset_s.patch +++ b/meta-networking/recipes-connectivity/samba/samba/0004-lib-replace-Remove-memset_s.patch @@ -24,7 +24,7 @@ diff --git a/lib/replace/README b/lib/replace/README index bb9d008..d8431e7 100644 --- a/lib/replace/README +++ b/lib/replace/README -@@ -74,7 +74,6 @@ realpath +@@ -73,7 +73,6 @@ realpath poll setproctitle memset_explicit @@ -36,219 +36,10 @@ diff --git a/lib/replace/replace.c b/lib/replace/replace.c index 8615899..a419837 100644 --- a/lib/replace/replace.c +++ b/lib/replace/replace.c -@@ -1,4 +1,4 @@ --/* -+/* - Unix SMB/CIFS implementation. - replacement routines for broken systems - Copyright (C) Andrew Tridgell 1992-1998 -@@ -8,7 +8,7 @@ - ** NOTE! The following LGPL license applies to the replace - ** library. This does NOT imply that all of Samba is released - ** under the LGPL -- -+ - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either -@@ -91,7 +91,7 @@ size_t rep_strlcpy(char *d, const char *s, size_t bufsize) - #endif - - #ifndef HAVE_STRLCAT --/* like strncat but does not 0 fill the buffer and always null -+/* like strncat but does not 0 fill the buffer and always null - terminates. bufsize is the length of the buffer, which should - be one more than the maximum resulting string length */ - size_t rep_strlcat(char *d, const char *s, size_t bufsize) -@@ -116,7 +116,7 @@ size_t rep_strlcat(char *d, const char *s, size_t bufsize) - - #ifndef HAVE_MKTIME - /******************************************************************* --a mktime() replacement for those who don't have it - contributed by -+a mktime() replacement for those who don't have it - contributed by - C.A. Lademann - Corrections by richard.kettlewell@kewill.com - ********************************************************************/ -@@ -137,7 +137,7 @@ time_t rep_mktime(struct tm *t) - return((time_t)-1); - - n = t->tm_year + 1900 - 1; -- epoch = (t->tm_year - 70) * YEAR + -+ epoch = (t->tm_year - 70) * YEAR + - ((n / 4 - n / 100 + n / 400) - (1969 / 4 - 1969 / 100 + 1969 / 400)) * DAY; - - y = t->tm_year + 1900; -@@ -147,7 +147,7 @@ time_t rep_mktime(struct tm *t) - epoch += mon [m] * DAY; - if(m == 1 && y % 4 == 0 && (y % 100 != 0 || y % 400 == 0)) - epoch += DAY; -- -+ - if(++m > 11) { - m = 0; - y++; -@@ -156,7 +156,7 @@ time_t rep_mktime(struct tm *t) - - epoch += (t->tm_mday - 1) * DAY; - epoch += t->tm_hour * HOUR + t->tm_min * MINUTE + t->tm_sec; -- -+ - if((u = localtime(&epoch)) != NULL) { - t->tm_sec = u->tm_sec; - t->tm_min = u->tm_min; -@@ -176,7 +176,7 @@ time_t rep_mktime(struct tm *t) - - #ifndef HAVE_INITGROUPS - /**************************************************************************** -- some systems don't have an initgroups call -+ some systems don't have an initgroups call - ****************************************************************************/ - int rep_initgroups(char *name, gid_t id) - { -@@ -194,7 +194,7 @@ int rep_initgroups(char *name, gid_t id) - int i,j; - struct group *g; - char *gr; -- -+ - if((grouplst = malloc(sizeof(gid_t) * max_gr)) == NULL) { - errno = ENOMEM; - return -1; -@@ -250,9 +250,9 @@ void *rep_memmove(void *dest,const void *src,int size) - - if (d < s) { - /* we can forward copy */ -- if (s-d >= sizeof(int) && -- !(s%sizeof(int)) && -- !(d%sizeof(int)) && -+ if (s-d >= sizeof(int) && -+ !(s%sizeof(int)) && -+ !(d%sizeof(int)) && - !(size%sizeof(int))) { - /* do it all as words */ - int *idest = (int *)dest; -@@ -267,9 +267,9 @@ void *rep_memmove(void *dest,const void *src,int size) - } - } else { - /* must backward copy */ -- if (d-s >= sizeof(int) && -- !(s%sizeof(int)) && -- !(d%sizeof(int)) && -+ if (d-s >= sizeof(int) && -+ !(s%sizeof(int)) && -+ !(d%sizeof(int)) && - !(size%sizeof(int))) { - /* do it all as words */ - int *idest = (int *)dest; -@@ -281,7 +281,7 @@ void *rep_memmove(void *dest,const void *src,int size) - char *cdest = (char *)dest; - char *csrc = (char *)src; - for (i=size-1;i>=0;i--) cdest[i] = csrc[i]; -- } -+ } - } - return(dest); - } -@@ -334,16 +334,16 @@ void rep_vsyslog (int facility_priority, const char *format, va_list arglist) - size_t rep_strnlen(const char *s, size_t max) - { - size_t len; -- -+ - for (len = 0; len < max; len++) { - if (s[len] == '\0') { - break; - } - } -- return len; -+ return len; +@@ -965,37 +965,6 @@ } #endif -- -+ - #ifndef HAVE_STRNDUP - /** - Some platforms don't have strndup. -@@ -351,7 +351,7 @@ void rep_vsyslog (int facility_priority, const char *format, va_list arglist) - char *rep_strndup(const char *s, size_t n) - { - char *ret; -- -+ - n = strnlen(s, n); - ret = malloc(n+1); - if (!ret) -@@ -407,7 +407,7 @@ int rep_chroot(const char *dname) - - /***************************************************************** - Possibly replace mkstemp if it is broken. --*****************************************************************/ -+*****************************************************************/ - - #ifndef HAVE_SECURE_MKSTEMP - int rep_mkstemp(char *template) -@@ -425,7 +425,7 @@ int rep_mkstemp(char *template) - char *rep_mkdtemp(char *template) - { - char *dname; -- -+ - if ((dname = mktemp(template))) { - if (mkdir(dname, 0700) >= 0) { - return dname; -@@ -532,7 +532,7 @@ long long int rep_strtoll(const char *str, char **endptr, int base) - { - #ifdef HAVE_STRTOQ - return strtoq(str, endptr, base); --#elif defined(HAVE___STRTOLL) -+#elif defined(HAVE___STRTOLL) - return __strtoll(str, endptr, base); - #elif SIZEOF_LONG == SIZEOF_LONG_LONG - return (long long int) strtol(str, endptr, base); -@@ -568,7 +568,7 @@ unsigned long long int rep_strtoull(const char *str, char **endptr, int base) - { - #ifdef HAVE_STRTOUQ - return strtouq(str, endptr, base); --#elif defined(HAVE___STRTOULL) -+#elif defined(HAVE___STRTOULL) - return __strtoull(str, endptr, base); - #elif SIZEOF_LONG == SIZEOF_LONG_LONG - return (unsigned long long int) strtoul(str, endptr, base); -@@ -599,7 +599,7 @@ unsigned long long int rep_strtoull(const char *str, char **endptr, int base) - #endif /* HAVE_STRTOULL */ - - #ifndef HAVE_SETENV --int rep_setenv(const char *name, const char *value, int overwrite) -+int rep_setenv(const char *name, const char *value, int overwrite) - { - char *p; - size_t l1, l2; -@@ -644,10 +644,10 @@ int rep_unsetenv(const char *name) - for (i=0;environ[i];i++) /* noop */ ; - - count=i; -- -+ - for (i=0;i -Reviewed-by: Alexander Bokovoy - -Autobuild-User(master): Andreas Schneider -Autobuild-Date(master): Tue Jan 21 19:38:37 UTC 2025 on atb-devel-224 - -Upstream-Status: Backport [https://github.com/samba-team/samba/commit/9aa5c43315d83c19514251a11c4fba5a137f2821] - -Signed-off-by: Markus Volk ---- - lib/replace/system/readline.h | 4 +++- - libcli/smbreadline/wscript_configure | 8 +++++--- - 2 files changed, 8 insertions(+), 4 deletions(-) - -diff --git a/lib/replace/system/readline.h b/lib/replace/system/readline.h -index 9a9af266ca6d..ac3604fc12e0 100644 ---- a/lib/replace/system/readline.h -+++ b/lib/replace/system/readline.h -@@ -46,7 +46,9 @@ - #endif - - #ifdef HAVE_NEW_LIBREADLINE --#ifdef HAVE_CPPFUNCTION -+#if defined(HAVE_RL_COMPLETION_FUNC_T) -+# define RL_COMPLETION_CAST (rl_completion_func_t *) -+#elif defined(HAVE_CPPFUNCTION) - # define RL_COMPLETION_CAST (CPPFunction *) - #elif defined(HAVE_RL_COMPLETION_T) - # define RL_COMPLETION_CAST (rl_completion_t *) -diff --git a/libcli/smbreadline/wscript_configure b/libcli/smbreadline/wscript_configure -index 912ff53a150d..f5a401ebae00 100644 ---- a/libcli/smbreadline/wscript_configure -+++ b/libcli/smbreadline/wscript_configure -@@ -51,10 +51,12 @@ conf.CHECK_CODE(''' - # endif - # endif - #endif --int main(void) {rl_completion_t f; return 0;} -+int main(void) {rl_completion_func_t f; return 0;} - ''', --'HAVE_RL_COMPLETION_FUNC_T', execute=False, addmain=False, --msg='Checking for rl_completion_t') -+ 'HAVE_RL_COMPLETION_FUNC_T', -+ execute=False, -+ addmain=False, -+ msg='Checking for rl_completion_func_t') - - conf.CHECK_CODE(''' - #ifdef HAVE_READLINE_READLINE_H diff --git a/meta-networking/recipes-connectivity/samba/samba_4.19.9.bb b/meta-networking/recipes-connectivity/samba/samba_4.19.9.bb deleted file mode 100644 index 3ed1d46754..0000000000 --- a/meta-networking/recipes-connectivity/samba/samba_4.19.9.bb +++ /dev/null @@ -1,367 +0,0 @@ -HOMEPAGE = "https://www.samba.org/" -SECTION = "console/network" - -LICENSE = "GPL-3.0-or-later & LGPL-3.0-or-later & GPL-2.0-or-later" -LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \ - file://${COREBASE}/meta/files/common-licenses/LGPL-3.0-or-later;md5=c51d3eef3be114124d11349ca0d7e117 \ - file://${COREBASE}/meta/files/common-licenses/GPL-2.0-or-later;md5=fed54355545ffd980b814dab4a3b312c" - -SAMBA_MIRROR = "http://samba.org/samba/ftp" -MIRRORS += "\ -${SAMBA_MIRROR} http://mirror.internode.on.net/pub/samba \n \ -${SAMBA_MIRROR} http://www.mirrorservice.org/sites/ftp.samba.org \n \ -" - -export PYTHONHASHSEED = "1" - -SRC_URI = "${SAMBA_MIRROR}/stable/samba-${PV}.tar.gz \ - file://smb.conf \ - file://volatiles.03_samba \ - file://0001-Don-t-check-xsltproc-manpages.patch \ - file://0002-do-not-import-target-module-while-cross-compile.patch \ - file://0003-Add-config-option-without-valgrind.patch \ - file://0004-Add-options-to-configure-the-use-of-libbsd.patch \ - file://0005-Fix-pyext_PATTERN-for-cross-compilation.patch \ - file://0006-smbtorture-skip-test-case-tfork_cmd_send.patch \ - file://0007-Deleted-settiong-of-python-to-fix-the-install-confli.patch \ - file://9aa5c43315d83c19514251a11c4fba5a137f2821.patch \ - file://0001-lib-replace-Implement-memset_explicit.patch \ - file://0002-lib-replace-Add-test-for-memset_explicit.patch \ - file://0003-Replace-memset_s-with-memset_explicit.patch \ - file://0004-lib-replace-Remove-memset_s.patch \ - " - -SRC_URI:append:libc-musl = " \ - file://samba-pam.patch \ - file://samba-4.3.9-remove-getpwent_r.patch \ - " - -SRC_URI[sha256sum] = "71ed406444714c90bb9d36c576d807b67af15449f297e91106d42b3ca2fa5549" - -UPSTREAM_CHECK_REGEX = "samba\-(?P4\.19(\.\d+)+).tar.gz" - -inherit systemd waf-samba cpan-base perlnative update-rc.d perl-version pkgconfig - -CVE_STATUS[CVE-2011-2411] = "not-applicable-platform: vulnerable only on HP NonStop Servers" - -# remove default added RDEPENDS on perl -RDEPENDS:${PN}:remove = "perl" - -DEPENDS += "readline virtual/libiconv zlib popt libtalloc libtdb libtevent libldb libaio libpam libtasn1 libtasn1-native jansson libparse-yapp-perl-native gnutls cmocka" - -inherit features_check -REQUIRED_DISTRO_FEATURES = "pam" - -DEPENDS:append:libc-musl = " libtirpc" -CFLAGS:append:libc-musl = " -I${STAGING_INCDIR}/tirpc" -LDFLAGS:append:libc-musl = " -ltirpc" - -COMPATIBLE_HOST:riscv32 = "null" - -INITSCRIPT_NAME = "samba" -INITSCRIPT_PARAMS = "start 20 3 5 . stop 20 0 1 6 ." - -SYSTEMD_PACKAGES = "${PN}-base ${PN}-ad-dc winbind ctdb" -SYSTEMD_SERVICE:${PN}-base = "nmb.service smb.service" -SYSTEMD_SERVICE:${PN}-ad-dc = "${@bb.utils.contains('PACKAGECONFIG', 'ad-dc', 'samba.service', '', d)}" -SYSTEMD_SERVICE:winbind = "winbind.service" -SYSTEMD_SERVICE:ctdb = "ctdb.service" - -# There are prerequisite settings to enable ad-dc, so disable the service by default. -# Reference: -# https://wiki.samba.org/index.php/Setting_up_Samba_as_an_Active_Directory_Domain_Controller -SYSTEMD_AUTO_ENABLE:${PN}-ad-dc = "disable" - -#cross_compile cannot use preforked process, since fork process earlier than point subproces.popen -#to cross Popen -export WAF_NO_PREFORK = "yes" - -# Use krb5. Build active domain controller. -# -PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd zeroconf', d)} \ - acl cups ldap mitkrb5 \ -" - -PACKAGECONFIG[acl] = "--with-acl-support,--without-acl-support,acl" -PACKAGECONFIG[fam] = "--with-fam,--without-fam,gamin" -PACKAGECONFIG[cups] = "--enable-cups,--disable-cups,cups" -PACKAGECONFIG[ldap] = "--with-ldap,--without-ldap,openldap" -PACKAGECONFIG[sasl] = ",,cyrus-sasl" -PACKAGECONFIG[systemd] = "--with-systemd,--without-systemd,systemd" -PACKAGECONFIG[dmapi] = "--with-dmapi,--without-dmapi,dmapi" -PACKAGECONFIG[zeroconf] = "--enable-avahi,--disable-avahi,avahi" -PACKAGECONFIG[valgrind] = "--with-valgrind,--without-valgrind,valgrind" -PACKAGECONFIG[lttng] = "--with-lttng,--without-lttng,lttng-ust" -PACKAGECONFIG[archive] = "--with-libarchive,--without-libarchive,libarchive" -PACKAGECONFIG[libunwind] = "--with-libunwind,--without-libunwind,libunwind" -PACKAGECONFIG[gpgme] = "--with-gpgme,--without-gpgme,gpgme" -PACKAGECONFIG[lmdb] = ",--without-ldb-lmdb,lmdb" -PACKAGECONFIG[libbsd] = "--with-libbsd,--without-libbsd,libbsd" -PACKAGECONFIG[ad-dc] = "--with-experimental-mit-ad-dc,--without-ad-dc,python3-markdown python3-dnspython,python3-markdown" -PACKAGECONFIG[mitkrb5] = "--with-system-mitkrb5 --with-system-mitkdc=/usr/sbin/krb5kdc,,krb5," - -SAMBA4_IDMAP_MODULES = "idmap_ad,idmap_rid,idmap_adex,idmap_hash,idmap_tdb2" -SAMBA4_PDB_MODULES = "pdb_tdbsam,${@bb.utils.contains('PACKAGECONFIG', 'ldap', 'pdb_ldap,', '', d)}pdb_ads,pdb_smbpasswd,pdb_wbc_sam,pdb_samba4" -SAMBA4_AUTH_MODULES = "auth_unix,auth_wbc,auth_server,auth_netlogond,auth_script,auth_samba4" -SAMBA4_MODULES = "${SAMBA4_IDMAP_MODULES},${SAMBA4_PDB_MODULES},${SAMBA4_AUTH_MODULES}" - -# These libraries are supposed to replace others supplied by packages, but decorate the names of -# .so files so there will not be a conflict. This is not done consistantly, so be very careful -# when adding to this list. -# -SAMBA4_LIBS = "heimdal,NONE" - -EXTRA_OECONF += "--enable-fhs \ - --with-piddir=/run \ - --with-sockets-dir=/run/samba \ - --with-modulesdir=${libdir}/samba \ - --with-privatelibdir=${libdir}/samba \ - --with-lockdir=${localstatedir}/lib/samba \ - --with-cachedir=${localstatedir}/lib/samba \ - --disable-rpath-install \ - --disable-rpath \ - --with-shared-modules=${SAMBA4_MODULES} \ - --bundled-libraries=${SAMBA4_LIBS} \ - ${@oe.utils.conditional('TARGET_ARCH', 'x86_64', '', '--disable-glusterfs', d)} \ - --with-cluster-support \ - --with-profiling-data \ - --with-libiconv=${STAGING_DIR_HOST}${prefix} \ - --with-pam --with-pammodulesdir=${base_libdir}/security \ - --pythondir=${PYTHON_SITEPACKAGES_DIR} \ - " - -LDFLAGS += "-Wl,-z,relro,-z,now" - -do_configure:append() { - cd ${S}/pidl/ - perl Makefile.PL PREFIX=${prefix} - sed -e 's,VENDORPREFIX)/lib/perl,VENDORPREFIX)/${baselib}/perl,g' \ - -e 's,PERLPREFIX)/lib/perl,PERLPREFIX)/${baselib}/perl,g' -i Makefile -} - -do_compile:append() { - oe_runmake -C ${S}/pidl -} - -do_install:append() { - for section in 1 5 7; do - install -d ${D}${mandir}/man$section - install -m 0644 ctdb/doc/*.$section ${D}${mandir}/man$section - done - for section in 1 5 7 8; do - install -d ${D}${mandir}/man$section - install -m 0644 docs/manpages/*.$section ${D}${mandir}/man$section - done - - install -d ${D}${systemd_system_unitdir} - install -m 0644 ${S}/bin/default/packaging/systemd/*.service ${D}${systemd_system_unitdir}/ - sed -e 's,\(ExecReload=\).*\(/kill\),\1${base_bindir}\2,' \ - -e 's,/etc/sysconfig/samba,${sysconfdir}/default/samba,' \ - -i ${D}${systemd_system_unitdir}/*.service - - if [ "${@bb.utils.contains('PACKAGECONFIG', 'ad-dc', 'yes', 'no', d)}" = "no" ]; then - rm -f ${D}${systemd_system_unitdir}/samba.service - fi - - install -d ${D}${sysconfdir}/tmpfiles.d - install -m644 packaging/systemd/samba.conf.tmp ${D}${sysconfdir}/tmpfiles.d/samba.conf - echo "d ${localstatedir}/log/samba 0755 root root -" \ - >> ${D}${sysconfdir}/tmpfiles.d/samba.conf - install -d ${D}${sysconfdir}/init.d - install -m 0755 packaging/sysv/samba.init ${D}${sysconfdir}/init.d/samba - sed -e 's,/opt/samba/bin,${sbindir},g' \ - -e 's,/opt/samba/smb.conf,${sysconfdir}/samba/smb.conf,g' \ - -e 's,/opt/samba/log,${localstatedir}/log/samba,g' \ - -e 's,/etc/init.d/samba.server,${sysconfdir}/init.d/samba,g' \ - -e 's,/usr/bin,${base_bindir},g' \ - -i ${D}${sysconfdir}/init.d/samba - - install -d ${D}${sysconfdir}/samba - echo "127.0.0.1 localhost" > ${D}${sysconfdir}/samba/lmhosts - install -m644 ${UNPACKDIR}/smb.conf ${D}${sysconfdir}/samba/smb.conf - install -D -m 644 ${UNPACKDIR}/volatiles.03_samba ${D}${sysconfdir}/default/volatiles/03_samba - - install -d ${D}${sysconfdir}/default - install -m644 packaging/systemd/samba.sysconfig ${D}${sysconfdir}/default/samba - - # the items are from ctdb/tests/run_tests.sh - for d in cunit eventd eventscripts onnode shellcheck takeover takeover_helper tool; do - testdir=${D}${datadir}/ctdb-tests/UNIT/$d - install -d $testdir - cp ${S}/ctdb/tests/UNIT/$d/*.sh $testdir - cp -r ${S}/ctdb/tests/UNIT/$d/scripts ${S}/ctdb/tests/UNIT/$d/stubs $testdir || true - done - - # fix file-rdeps qa warning - if [ -f ${D}${bindir}/onnode ]; then - sed -i 's:\(#!/bin/\)bash:\1sh:' ${D}${bindir}/onnode - fi - - chmod 0750 ${D}${sysconfdir}/sudoers.d || true - rm -rf ${D}/run ${D}${localstatedir}/run ${D}${localstatedir}/log - - for f in samba-gpupdate samba_upgradedns samba_spnupdate samba_kcc samba_dnsupdate samba_downgrade_db; do - if [ -f "${D}${sbindir}/$f" ]; then - sed -i -e 's,${PYTHON},/usr/bin/env python3,g' ${D}${sbindir}/$f - fi - done - if [ -f "${D}${bindir}/samba-tool" ]; then - sed -i -e 's,${PYTHON},/usr/bin/env python3,g' ${D}${bindir}/samba-tool - fi - - oe_runmake -C ${S}/pidl DESTDIR=${D} install_vendor - find ${D}${libdir}/perl5/ -type f -name "perllocal.pod" -delete - find ${D}${libdir}/perl5/ -type f -name ".packlist" -delete - sed -i -e '1s,#!.*perl,#!${bindir}/env perl,' ${D}${bindir}/pidl -} - -PACKAGES =+ "${PN}-python3 ${PN}-pidl \ - ${PN}-dsdb-modules ${PN}-testsuite registry-tools \ - winbind ctdb ctdb-tests \ - ${PN}-common ${PN}-base ${PN}-ad-dc \ - smbclient ${PN}-client ${PN}-server ${PN}-test" - -python samba_populate_packages() { - def module_hook(file, pkg, pattern, format, basename): - pn = d.getVar('PN') - d.appendVar('RRECOMMENDS:%s-base' % pn, ' %s' % pkg) - - mlprefix = d.getVar('MLPREFIX') or '' - pam_libdir = d.expand('${base_libdir}/security') - pam_pkgname = mlprefix + 'pam-plugin%s' - do_split_packages(d, pam_libdir, r'^pam_(.*)\.so$', pam_pkgname, 'PAM plugin for %s', extra_depends='', prepend=True) - - libdir = d.getVar('libdir') - do_split_packages(d, libdir, r'^lib(.*)\.so\..*$', 'lib%s', 'Samba %s library', extra_depends='${PN}-common', prepend=True, allow_links=True) - pkglibdir = '%s/samba' % libdir - do_split_packages(d, pkglibdir, r'^lib(.*)\.so$', 'lib%s', 'Samba %s library', extra_depends='${PN}-common', prepend=True) - moduledir = '%s/samba/auth' % libdir - do_split_packages(d, moduledir, r'^(.*)\.so$', 'samba-auth-%s', 'Samba %s authentication backend', hook=module_hook, extra_depends='', prepend=True) - moduledir = '%s/samba/pdb' % libdir - do_split_packages(d, moduledir, r'^(.*)\.so$', 'samba-pdb-%s', 'Samba %s password backend', hook=module_hook, extra_depends='', prepend=True) -} - -PACKAGESPLITFUNCS:prepend = "samba_populate_packages " -PACKAGES_DYNAMIC = "samba-auth-.* samba-pdb-.*" - -RDEPENDS:${PN} += "${PN}-base ${PN}-python3 ${PN}-dsdb-modules python3" -RDEPENDS:${PN}-python3 += "pytalloc python3-tdb pyldb" - -FILES:${PN}-base = "${sbindir}/nmbd \ - ${sbindir}/smbd \ - ${sysconfdir}/init.d \ - ${systemd_system_unitdir}/nmb.service \ - ${systemd_system_unitdir}/smb.service" - -FILES:${PN}-ad-dc = "${sbindir}/samba \ - ${systemd_system_unitdir}/samba.service \ - ${libdir}/krb5/plugins/kdb/samba.so \ -" - -RDEPENDS:${PN}-ad-dc = "krb5-kdc" - -FILES:ctdb = "${bindir}/ctdb \ - ${bindir}/ctdb_diagnostics \ - ${bindir}/ltdbtool \ - ${bindir}/onnode \ - ${bindir}/ping_pong \ - ${sbindir}/ctdbd \ - ${datadir}/ctdb \ - ${libexecdir}/ctdb \ - ${localstatedir}/lib/ctdb \ - ${sysconfdir}/ctdb \ - ${sysconfdir}/sudoers.d/ctdb \ - ${systemd_system_unitdir}/ctdb.service \ -" - -FILES:ctdb-tests = "${bindir}/ctdb_run_tests \ - ${bindir}/ctdb_run_cluster_tests \ - ${datadir}/ctdb-tests \ - ${datadir}/ctdb/tests \ -" - -RDEPENDS:ctdb-tests += "bash util-linux-getopt ctdb" - -FILES:${BPN}-common = "${sysconfdir}/default \ - ${sysconfdir}/samba \ - ${sysconfdir}/tmpfiles.d \ - ${localstatedir}/lib/samba \ - ${localstatedir}/spool/samba \ -" - -FILES:${PN} += "${libdir}/vfs/*.so \ - ${libdir}/charset/*.so \ - ${libdir}/*.dat \ - ${libdir}/auth/*.so \ -" - -FILES:${PN}-dsdb-modules = "${libdir}/samba/ldb" - -FILES:${PN}-testsuite = "${bindir}/gentest \ - ${bindir}/locktest \ - ${bindir}/masktest \ - ${bindir}/ndrdump \ - ${bindir}/smbtorture" - -FILES:registry-tools = "${bindir}/regdiff \ - ${bindir}/regpatch \ - ${bindir}/regshell \ - ${bindir}/regtree" - -FILES:winbind = "${sbindir}/winbindd \ - ${bindir}/wbinfo \ - ${bindir}/ntlm_auth \ - ${libdir}/samba/idmap \ - ${libdir}/samba/nss_info \ - ${libdir}/winbind_krb5_locator.so \ - ${libdir}/winbind-krb5-localauth.so \ - ${sysconfdir}/init.d/winbind \ - ${systemd_system_unitdir}/winbind.service" - -FILES:${PN}-python3 = "${PYTHON_SITEPACKAGES_DIR}" - -FILES:smbclient = "${bindir}/cifsdd \ - ${bindir}/rpcclient \ - ${bindir}/smbcacls \ - ${bindir}/smbclient \ - ${bindir}/smbcquotas \ - ${bindir}/smbget \ - ${bindir}/smbspool \ - ${bindir}/smbtar \ - ${bindir}/smbtree \ - ${libexecdir}/samba/smbspool_krb5_wrapper" - -FILES:${PN}-pidl = "${bindir}/pidl \ - ${libdir}/perl5 \ - " -RDEPENDS:${PN}-pidl += "perl perl-modules libparse-yapp-perl" - -RDEPENDS:${PN}-client = "\ - smbclient \ - winbind \ - registry-tools \ - ${PN}-pidl \ - " - -ALLOW_EMPTY:${PN}-client = "1" - -RDEPENDS:${PN}-server = "\ - ${PN} \ - winbind \ - registry-tools \ - " - -ALLOW_EMPTY:${PN}-server = "1" - -RDEPENDS:${PN}-test = "\ - ctdb-tests \ - ${PN}-testsuite \ - " - -pkg_postinst:${PN}-common() { - if [ -z "$D" ] && [ -e ${sysconfdir}/init.d/populate-volatile.sh ]; then - ${sysconfdir}/init.d/populate-volatile.sh update - fi -} - -ALLOW_EMPTY:${PN}-test = "1" diff --git a/meta-networking/recipes-connectivity/samba/samba_4.23.5.bb b/meta-networking/recipes-connectivity/samba/samba_4.23.5.bb new file mode 100644 index 0000000000..ec3149562a --- /dev/null +++ b/meta-networking/recipes-connectivity/samba/samba_4.23.5.bb @@ -0,0 +1,386 @@ +HOMEPAGE = "https://www.samba.org/" +SECTION = "console/network" + +LICENSE = "GPL-3.0-or-later & LGPL-3.0-or-later & GPL-2.0-or-later" +LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \ + file://${COREBASE}/meta/files/common-licenses/LGPL-3.0-or-later;md5=c51d3eef3be114124d11349ca0d7e117 \ + file://${COREBASE}/meta/files/common-licenses/GPL-2.0-or-later;md5=fed54355545ffd980b814dab4a3b312c" + +SAMBA_MIRROR = "http://samba.org/samba/ftp" +MIRRORS += "\ +${SAMBA_MIRROR} http://mirror.internode.on.net/pub/samba \n \ +${SAMBA_MIRROR} http://www.mirrorservice.org/sites/ftp.samba.org \n \ +" + +export PYTHONHASHSEED = "1" + +# If XML_CATALOG_FILES env var is not defined, waf defaults +# to build host folders looking for catalogs. +export XML_CATALOG_FILES = "" + +SRC_URI = "${SAMBA_MIRROR}/stable/samba-${PV}.tar.gz \ + file://smb.conf \ + file://volatiles.03_samba \ + file://0001-Don-t-check-xsltproc-manpages.patch \ + file://0002-do-not-import-target-module-while-cross-compile.patch \ + file://0003-Add-config-option-without-valgrind.patch \ + file://0004-Add-options-to-configure-the-use-of-libbsd.patch \ + file://0005-Fix-pyext_PATTERN-for-cross-compilation.patch \ + file://0006-smbtorture-skip-test-case-tfork_cmd_send.patch \ + file://0007-Deleted-settiong-of-python-to-fix-the-install-confli.patch \ + file://0001-lib-replace-Implement-memset_explicit.patch \ + file://0002-lib-replace-Add-test-for-memset_explicit.patch \ + file://0003-Replace-memset_s-with-memset_explicit.patch \ + file://0004-lib-replace-Remove-memset_s.patch \ + " + +SRC_URI:append:libc-musl = " \ + file://samba-pam.patch \ + file://samba-4.3.9-remove-getpwent_r.patch \ + " + +SRC_URI[sha256sum] = "593a43ddd0d57902237dfa76888f7b02cb7fc7747111369cb31e126db4836b9f" + +UPSTREAM_CHECK_REGEX = "samba\-(?P4\.19(\.\d+)+).tar.gz" + +inherit systemd waf-samba cpan-base perlnative update-rc.d perl-version pkgconfig + +CVE_STATUS[CVE-2011-2411] = "not-applicable-platform: vulnerable only on HP NonStop Servers" + +# remove default added RDEPENDS on perl +RDEPENDS:${PN}:remove = "perl" + +DEPENDS += "readline virtual/libiconv zlib popt libtalloc libtdb libtevent libaio libpam libtasn1 libtasn1-native jansson libparse-yapp-perl-native gnutls cmocka ngtcp2 bison-native" + +inherit features_check +REQUIRED_DISTRO_FEATURES = "pam" + +DEPENDS:append:libc-musl = " libtirpc" +CFLAGS:append:libc-musl = " -I${STAGING_INCDIR}/tirpc" +LDFLAGS:append:libc-musl = " -ltirpc" + +COMPATIBLE_HOST:riscv32 = "null" + +INITSCRIPT_NAME = "samba" +INITSCRIPT_PARAMS = "start 20 3 5 . stop 20 0 1 6 ." + +SYSTEMD_PACKAGES = "${PN}-base ${PN}-ad-dc winbind ctdb" +SYSTEMD_SERVICE:${PN}-base = "nmb.service smb.service samba-bgqd.service" +SYSTEMD_SERVICE:${PN}-ad-dc = "${@bb.utils.contains('PACKAGECONFIG', 'ad-dc', 'samba.service', '', d)}" +SYSTEMD_SERVICE:winbind = "winbind.service" +SYSTEMD_SERVICE:ctdb = "ctdb.service" + +# There are prerequisite settings to enable ad-dc, so disable the service by default. +# Reference: +# https://wiki.samba.org/index.php/Setting_up_Samba_as_an_Active_Directory_Domain_Controller +SYSTEMD_AUTO_ENABLE:${PN}-ad-dc = "disable" + +#cross_compile cannot use preforked process, since fork process earlier than point subproces.popen +#to cross Popen +export WAF_NO_PREFORK = "yes" + +# Use krb5. Build active domain controller. +# +PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd zeroconf', d)} \ + acl cups ldap mitkrb5 \ +" + +PACKAGECONFIG[acl] = "--with-acl-support,--without-acl-support,acl" +PACKAGECONFIG[fam] = "--with-fam,--without-fam,gamin" +PACKAGECONFIG[cups] = "--enable-cups,--disable-cups,cups" +PACKAGECONFIG[ldap] = "--with-ldap,--without-ldap,openldap" +PACKAGECONFIG[sasl] = ",,cyrus-sasl" +PACKAGECONFIG[systemd] = "--with-systemd,--without-systemd,systemd" +PACKAGECONFIG[dmapi] = "--with-dmapi,--without-dmapi,dmapi" +PACKAGECONFIG[zeroconf] = "--enable-avahi,--disable-avahi,avahi" +PACKAGECONFIG[valgrind] = "--with-valgrind,--without-valgrind,valgrind" +PACKAGECONFIG[lttng] = "--with-lttng,--without-lttng,lttng-ust" +PACKAGECONFIG[archive] = "--with-libarchive,--without-libarchive,libarchive" +PACKAGECONFIG[libunwind] = "--with-libunwind,--without-libunwind,libunwind" +PACKAGECONFIG[gpgme] = "--with-gpgme,--without-gpgme,gpgme" +PACKAGECONFIG[lmdb] = ",--without-ldb-lmdb,lmdb" +PACKAGECONFIG[libbsd] = "--with-libbsd,--without-libbsd,libbsd" +PACKAGECONFIG[ad-dc] = "--with-experimental-mit-ad-dc,--without-ad-dc,python3-markdown python3-dnspython,python3-markdown" +PACKAGECONFIG[mitkrb5] = "--with-system-mitkrb5 --with-system-mitkdc=/usr/sbin/krb5kdc,,krb5," + +SAMBA4_IDMAP_MODULES = "idmap_ad,idmap_rid,idmap_adex,idmap_hash,idmap_tdb2" +SAMBA4_PDB_MODULES = "pdb_tdbsam,${@bb.utils.contains('PACKAGECONFIG', 'ldap', 'pdb_ldap,', '', d)}pdb_ads,pdb_smbpasswd,pdb_wbc_sam,pdb_samba4" +SAMBA4_AUTH_MODULES = "auth_unix,auth_wbc,auth_server,auth_netlogond,auth_script,auth_samba4" +SAMBA4_MODULES = "${SAMBA4_IDMAP_MODULES},${SAMBA4_PDB_MODULES},${SAMBA4_AUTH_MODULES}" + +# These libraries are supposed to replace others supplied by packages, but decorate the names of +# .so files so there will not be a conflict. This is not done consistantly, so be very careful +# when adding to this list. +# +SAMBA4_LIBS = "heimdal,libquic,NONE" + +EXTRA_OECONF += "--enable-fhs \ + --with-piddir=/run \ + --with-sockets-dir=/run/samba \ + --with-modulesdir=${libdir}/samba \ + --with-privatelibdir=${libdir}/samba \ + --with-lockdir=${localstatedir}/lib/samba \ + --with-cachedir=${localstatedir}/lib/samba \ + --disable-rpath-install \ + --disable-rpath \ + --with-shared-modules=${SAMBA4_MODULES} \ + --bundled-libraries=${SAMBA4_LIBS} \ + ${@oe.utils.conditional('TARGET_ARCH', 'x86_64', '', '--disable-glusterfs', d)} \ + --with-cluster-support \ + --with-profiling-data \ + --with-libiconv=${STAGING_DIR_HOST}${prefix} \ + --with-pam --with-pammodulesdir=${base_libdir}/security \ + --pythondir=${PYTHON_SITEPACKAGES_DIR} \ + " + +LDFLAGS += "-Wl,-z,relro,-z,now" + +do_configure:prepend() { + # The xsltproc tool is actually a wrapper script in OE, which exports its own XML_CATALOG_FILES env var + # However samba does that too. So here I'm trying to concatenate the variables. + # The original looks like this in the wrapper: + # export XML_CATALOG_FILES=oe-core-specific-thing + # and this sed prepends the value with $XML_CATALOG_FILES, and encloses it in quotes. So the end value is + # export XML_CATALOG_FILES="$XML_CATALOG FILES oe-core-specific-thing" + # The first grep just checks if it was already done, so it is not prepended multiple times. + + grep \$XML_CATALOG_FILES ${STAGING_BINDIR_NATIVE}/xsltproc || \ + sed -i 's,\(XML_CATALOG_FILES\)=\(.*\),\1="\$XML_CATALOG_FILES \2",' ${STAGING_BINDIR_NATIVE}/xsltproc +} + +do_configure:append() { + cd ${S}/pidl/ + perl Makefile.PL PREFIX=${prefix} + sed -e 's,VENDORPREFIX)/lib/perl,VENDORPREFIX)/${baselib}/perl,g' \ + -e 's,PERLPREFIX)/lib/perl,PERLPREFIX)/${baselib}/perl,g' -i Makefile +} + +do_compile:append() { + oe_runmake -C ${S}/pidl +} + +do_install:append() { + for section in 1 5 7; do + install -d ${D}${mandir}/man$section + install -m 0644 ctdb/doc/*.$section ${D}${mandir}/man$section + done + for section in 1 5 7 8; do + install -d ${D}${mandir}/man$section + install -m 0644 docs/manpages/*.$section ${D}${mandir}/man$section + done + + install -d ${D}${systemd_system_unitdir} + install -m 0644 ${S}/bin/default/packaging/systemd/*.service ${D}${systemd_system_unitdir}/ + sed -e 's,\(ExecReload=\).*\(/kill\),\1${base_bindir}\2,' \ + -e 's,/etc/sysconfig/samba,${sysconfdir}/default/samba,' \ + -i ${D}${systemd_system_unitdir}/*.service + + if [ "${@bb.utils.contains('PACKAGECONFIG', 'ad-dc', 'yes', 'no', d)}" = "no" ]; then + rm -f ${D}${systemd_system_unitdir}/samba.service + fi + + install -d ${D}${sysconfdir}/tmpfiles.d + install -m644 packaging/systemd/samba.conf.tmp ${D}${sysconfdir}/tmpfiles.d/samba.conf + echo "d ${localstatedir}/log/samba 0755 root root -" \ + >> ${D}${sysconfdir}/tmpfiles.d/samba.conf + install -d ${D}${sysconfdir}/init.d + install -m 0755 packaging/sysv/samba.init ${D}${sysconfdir}/init.d/samba + sed -e 's,/opt/samba/bin,${sbindir},g' \ + -e 's,/opt/samba/smb.conf,${sysconfdir}/samba/smb.conf,g' \ + -e 's,/opt/samba/log,${localstatedir}/log/samba,g' \ + -e 's,/etc/init.d/samba.server,${sysconfdir}/init.d/samba,g' \ + -e 's,/usr/bin,${base_bindir},g' \ + -i ${D}${sysconfdir}/init.d/samba + + install -d ${D}${sysconfdir}/samba + echo "127.0.0.1 localhost" > ${D}${sysconfdir}/samba/lmhosts + install -m644 ${UNPACKDIR}/smb.conf ${D}${sysconfdir}/samba/smb.conf + install -D -m 644 ${UNPACKDIR}/volatiles.03_samba ${D}${sysconfdir}/default/volatiles/03_samba + + install -d ${D}${sysconfdir}/default + install -m644 packaging/systemd/samba.sysconfig ${D}${sysconfdir}/default/samba + + # the items are from ctdb/tests/run_tests.sh + for d in cunit eventd eventscripts onnode shellcheck takeover takeover_helper tool; do + testdir=${D}${datadir}/ctdb-tests/UNIT/$d + install -d $testdir + cp ${S}/ctdb/tests/UNIT/$d/*.sh $testdir + cp -r ${S}/ctdb/tests/UNIT/$d/scripts ${S}/ctdb/tests/UNIT/$d/stubs $testdir || true + done + + # fix file-rdeps qa warning + if [ -f ${D}${bindir}/onnode ]; then + sed -i 's:\(#!/bin/\)bash:\1sh:' ${D}${bindir}/onnode + fi + + chmod 0750 ${D}${sysconfdir}/sudoers.d || true + rm -rf ${D}/run ${D}${localstatedir}/run ${D}${localstatedir}/log + + for f in samba-gpupdate samba_upgradedns samba_spnupdate samba_kcc samba_dnsupdate samba_downgrade_db; do + if [ -f "${D}${sbindir}/$f" ]; then + sed -i -e 's,${PYTHON},/usr/bin/env python3,g' ${D}${sbindir}/$f + fi + done + if [ -f "${D}${bindir}/samba-tool" ]; then + sed -i -e 's,${PYTHON},/usr/bin/env python3,g' ${D}${bindir}/samba-tool + fi + + oe_runmake -C ${S}/pidl DESTDIR=${D} install_vendor + find ${D}${libdir}/perl5/ -type f -name "perllocal.pod" -delete + find ${D}${libdir}/perl5/ -type f -name ".packlist" -delete + sed -i -e '1s,#!.*perl,#!${bindir}/env perl,' ${D}${bindir}/pidl + + sed -i 's,${UNPACKDIR},,g' ${S}/bin/default/libcli/wsp/wsp_aqs_lexer.c + sed -i 's,${UNPACKDIR},,g' ${S}/bin/default/libcli/wsp/wsp_aqs_lexer.h +} + +PACKAGES =+ "${PN}-python3 ${PN}-pidl \ + ${PN}-dsdb-modules ${PN}-testsuite registry-tools \ + winbind ctdb ctdb-tests \ + ${PN}-common ${PN}-base ${PN}-ad-dc \ + smbclient ${PN}-client ${PN}-server ${PN}-test" + +python samba_populate_packages() { + def module_hook(file, pkg, pattern, format, basename): + pn = d.getVar('PN') + d.appendVar('RRECOMMENDS:%s-base' % pn, ' %s' % pkg) + + mlprefix = d.getVar('MLPREFIX') or '' + pam_libdir = d.expand('${base_libdir}/security') + pam_pkgname = mlprefix + 'pam-plugin%s' + do_split_packages(d, pam_libdir, r'^pam_(.*)\.so$', pam_pkgname, 'PAM plugin for %s', extra_depends='', prepend=True) + + libdir = d.getVar('libdir') + do_split_packages(d, libdir, r'^lib(.*)\.so\..*$', 'lib%s', 'Samba %s library', extra_depends='${PN}-common', prepend=True, allow_links=True) + pkglibdir = '%s/samba' % libdir + do_split_packages(d, pkglibdir, r'^lib(.*)\.so$', 'lib%s', 'Samba %s library', extra_depends='${PN}-common', prepend=True) + moduledir = '%s/samba/auth' % libdir + do_split_packages(d, moduledir, r'^(.*)\.so$', 'samba-auth-%s', 'Samba %s authentication backend', hook=module_hook, extra_depends='', prepend=True) + moduledir = '%s/samba/pdb' % libdir + do_split_packages(d, moduledir, r'^(.*)\.so$', 'samba-pdb-%s', 'Samba %s password backend', hook=module_hook, extra_depends='', prepend=True) +} + +PACKAGESPLITFUNCS:prepend = "samba_populate_packages " +PACKAGES_DYNAMIC = "samba-auth-.* samba-pdb-.*" + +RDEPENDS:${PN} += "${PN}-base ${PN}-python3 ${PN}-dsdb-modules python3" +RDEPENDS:${PN}-python3 += "pytalloc python3-tdb" + +FILES:${PN}-base = "${sbindir}/nmbd \ + ${sbindir}/smbd \ + ${sysconfdir}/init.d \ + ${systemd_system_unitdir}/nmb.service \ + ${systemd_system_unitdir}/smb.service" + +FILES:${PN}-ad-dc = "${sbindir}/samba \ + ${systemd_system_unitdir}/samba.service \ + ${libdir}/krb5/plugins/kdb/samba.so \ +" + +RDEPENDS:${PN}-ad-dc = "krb5-kdc" + +FILES:ctdb = "${bindir}/ctdb \ + ${bindir}/ctdb_diagnostics \ + ${bindir}/ltdbtool \ + ${bindir}/onnode \ + ${bindir}/ping_pong \ + ${sbindir}/ctdbd \ + ${datadir}/ctdb \ + ${libexecdir}/ctdb \ + ${localstatedir}/lib/ctdb \ + ${sysconfdir}/ctdb \ + ${sysconfdir}/sudoers.d/ctdb \ + ${systemd_system_unitdir}/ctdb.service \ +" + +FILES:ctdb-tests = "${bindir}/ctdb_run_tests \ + ${bindir}/ctdb_run_cluster_tests \ + ${datadir}/ctdb-tests \ + ${datadir}/ctdb/tests \ +" + +RDEPENDS:ctdb-tests += "bash util-linux-getopt ctdb" + +FILES:${BPN}-common = "${sysconfdir}/default \ + ${sysconfdir}/samba \ + ${sysconfdir}/tmpfiles.d \ + ${localstatedir}/lib/samba \ + ${localstatedir}/spool/samba \ +" + +FILES:${PN} += "${libdir}/vfs/*.so \ + ${libdir}/charset/*.so \ + ${libdir}/*.dat \ + ${libdir}/auth/*.so \ +" + +FILES:${PN}-dsdb-modules = "${libdir}/samba/ldb" + +FILES:${PN}-testsuite = "${bindir}/gentest \ + ${bindir}/locktest \ + ${bindir}/masktest \ + ${bindir}/ndrdump \ + ${bindir}/smbtorture" + +FILES:registry-tools = "${bindir}/regdiff \ + ${bindir}/regpatch \ + ${bindir}/regshell \ + ${bindir}/regtree" + +FILES:winbind = "${sbindir}/winbindd \ + ${bindir}/wbinfo \ + ${bindir}/ntlm_auth \ + ${libdir}/samba/idmap \ + ${libdir}/samba/nss_info \ + ${libdir}/winbind_krb5_locator.so \ + ${libdir}/winbind-krb5-localauth.so \ + ${sysconfdir}/init.d/winbind \ + ${systemd_system_unitdir}/winbind.service" + +FILES:${PN}-python3 = "${PYTHON_SITEPACKAGES_DIR}" + +FILES:smbclient = "${bindir}/cifsdd \ + ${bindir}/rpcclient \ + ${bindir}/smbcacls \ + ${bindir}/smbclient \ + ${bindir}/smbcquotas \ + ${bindir}/smbget \ + ${bindir}/smbspool \ + ${bindir}/smbtar \ + ${bindir}/smbtree \ + ${libexecdir}/samba/smbspool_krb5_wrapper" + +FILES:${PN}-pidl = "${bindir}/pidl \ + ${libdir}/perl5 \ + " +RDEPENDS:${PN}-pidl += "perl perl-modules libparse-yapp-perl" + +RDEPENDS:${PN}-client = "\ + smbclient \ + winbind \ + registry-tools \ + ${PN}-pidl \ + " + +ALLOW_EMPTY:${PN}-client = "1" + +RDEPENDS:${PN}-server = "\ + ${PN} \ + winbind \ + registry-tools \ + " + +ALLOW_EMPTY:${PN}-server = "1" + +RDEPENDS:${PN}-test = "\ + ctdb-tests \ + ${PN}-testsuite \ + " + +pkg_postinst:${PN}-common() { + if [ -z "$D" ] && [ -e ${sysconfdir}/init.d/populate-volatile.sh ]; then + ${sysconfdir}/init.d/populate-volatile.sh update + fi +} + +ALLOW_EMPTY:${PN}-test = "1" -- cgit v1.2.3-54-g00ecf