diff --git a/.fmf/version b/.fmf/version deleted file mode 100644 index d00491f..0000000 --- a/.fmf/version +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/.gitignore b/.gitignore index 47652a9..a695288 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,2 @@ /samba-*.tar.xz /samba-*.tar.asc -/*.rpm -/results_samba diff --git a/gating.yaml b/gating.yaml deleted file mode 100644 index c2182c7..0000000 --- a/gating.yaml +++ /dev/null @@ -1,6 +0,0 @@ ---- !Policy -product_versions: - - fedora-* -decision_context: bodhi_update_push_stable -rules: - - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional} diff --git a/plans.fmf b/plans.fmf deleted file mode 100644 index e6427de..0000000 --- a/plans.fmf +++ /dev/null @@ -1,4 +0,0 @@ -discover: - how: fmf -execute: - how: tmt diff --git a/rpminspect.yaml b/rpminspect.yaml index f736bfa..c1455e2 100644 --- a/rpminspect.yaml +++ b/rpminspect.yaml @@ -4,7 +4,6 @@ inspections: badfuncs: ignore: - - /usr/bin/nmbd - /usr/bin/nmblookup - /usr/bin/smbtorture - /usr/lib*/libndr.so.* @@ -26,10 +25,3 @@ abidiff: debuginfo: ignore: - /usr/lib*/libdcerpc-samr.so.* - -annocheck: - ignore: - - /usr/bin/gentest - - /usr/bin/locktest - - /usr/bin/masktest - - /usr/bin/smbtorture diff --git a/samba-4.21.0-s3-notifyd.patch b/samba-4.21.0-s3-notifyd.patch new file mode 100644 index 0000000..31463fd --- /dev/null +++ b/samba-4.21.0-s3-notifyd.patch @@ -0,0 +1,513 @@ +From c9a7bc3e8f36cb9d6746e23ea56f9c27b82dcf49 Mon Sep 17 00:00:00 2001 +From: Andreas Schneider +Date: Mon, 22 Jul 2024 12:26:55 +0200 +Subject: [PATCH] s3:notifyd: Use a watcher per db record +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This fixes a O(n²) performance regression in notifyd. The problem was +that we had a watcher per notify instance. This changes the code to have +a watcher per notify db entry. + +BUG: https://bugzilla.samba.org/show_bug.cgi?id=14430 + +Signed-off-by: Andreas Schneider +Reviewed-by: Stefan Metzmacher +(cherry picked from commit af011b987a4ad0d3753d83cc0b8d97ad64ba874a) +--- + source3/smbd/notifyd/notifyd.c | 214 ++++++++++++++++++------- + source3/smbd/notifyd/notifyd_db.c | 5 +- + source3/smbd/notifyd/notifyd_entry.c | 51 ++++-- + source3/smbd/notifyd/notifyd_private.h | 46 ++++-- + 4 files changed, 228 insertions(+), 88 deletions(-) + +diff --git a/source3/smbd/notifyd/notifyd.c b/source3/smbd/notifyd/notifyd.c +index 64dd26a7e11..0b07ab3e435 100644 +--- a/source3/smbd/notifyd/notifyd.c ++++ b/source3/smbd/notifyd/notifyd.c +@@ -337,6 +337,7 @@ static bool notifyd_apply_rec_change( + struct messaging_context *msg_ctx) + { + struct db_record *rec = NULL; ++ struct notifyd_watcher watcher = {}; + struct notifyd_instance *instances = NULL; + size_t num_instances; + size_t i; +@@ -344,6 +345,7 @@ static bool notifyd_apply_rec_change( + TDB_DATA value; + NTSTATUS status; + bool ok = false; ++ bool new_watcher = false; + + if (pathlen == 0) { + DBG_WARNING("pathlen==0\n"); +@@ -374,8 +376,12 @@ static bool notifyd_apply_rec_change( + value = dbwrap_record_get_value(rec); + + if (value.dsize != 0) { +- if (!notifyd_parse_entry(value.dptr, value.dsize, NULL, +- &num_instances)) { ++ ok = notifyd_parse_entry(value.dptr, ++ value.dsize, ++ &watcher, ++ NULL, ++ &num_instances); ++ if (!ok) { + goto fail; + } + } +@@ -390,8 +396,22 @@ static bool notifyd_apply_rec_change( + goto fail; + } + +- if (value.dsize != 0) { +- memcpy(instances, value.dptr, value.dsize); ++ if (num_instances > 0) { ++ struct notifyd_instance *tmp = NULL; ++ size_t num_tmp = 0; ++ ++ ok = notifyd_parse_entry(value.dptr, ++ value.dsize, ++ NULL, ++ &tmp, ++ &num_tmp); ++ if (!ok) { ++ goto fail; ++ } ++ ++ memcpy(instances, ++ tmp, ++ sizeof(struct notifyd_instance) * num_tmp); + } + + for (i=0; ifilter, +- .internal_subdir_filter = chg->subdir_filter + }; + + num_instances += 1; + } + +- if ((instance->instance.filter != 0) || +- (instance->instance.subdir_filter != 0)) { +- int ret; ++ /* ++ * Calculate an intersection of the instances filters for the watcher. ++ */ ++ if (instance->instance.filter > 0) { ++ uint32_t filter = instance->instance.filter; ++ ++ if ((watcher.filter & filter) != filter) { ++ watcher.filter |= filter; ++ ++ new_watcher = true; ++ } ++ } ++ ++ /* ++ * Calculate an intersection of the instances subdir_filters for the ++ * watcher. ++ */ ++ if (instance->instance.subdir_filter > 0) { ++ uint32_t subdir_filter = instance->instance.subdir_filter; + +- TALLOC_FREE(instance->sys_watch); ++ if ((watcher.subdir_filter & subdir_filter) != subdir_filter) { ++ watcher.subdir_filter |= subdir_filter; + +- ret = sys_notify_watch(entries, sys_notify_ctx, path, +- &instance->internal_filter, +- &instance->internal_subdir_filter, +- notifyd_sys_callback, msg_ctx, +- &instance->sys_watch); +- if (ret != 0) { +- DBG_WARNING("sys_notify_watch for [%s] returned %s\n", +- path, strerror(errno)); ++ new_watcher = true; + } + } + + if ((instance->instance.filter == 0) && + (instance->instance.subdir_filter == 0)) { ++ uint32_t tmp_filter = 0; ++ uint32_t tmp_subdir_filter = 0; ++ + /* This is a delete request */ +- TALLOC_FREE(instance->sys_watch); + *instance = instances[num_instances-1]; + num_instances -= 1; ++ ++ for (i = 0; i < num_instances; i++) { ++ struct notifyd_instance *tmp = &instances[i]; ++ ++ tmp_filter |= tmp->instance.filter; ++ tmp_subdir_filter |= tmp->instance.subdir_filter; ++ } ++ ++ /* ++ * If the filter has changed, register a new watcher with the ++ * changed filter. ++ */ ++ if (watcher.filter != tmp_filter || ++ watcher.subdir_filter != tmp_subdir_filter) ++ { ++ watcher.filter = tmp_filter; ++ watcher.subdir_filter = tmp_subdir_filter; ++ ++ new_watcher = true; ++ } ++ } ++ ++ if (new_watcher) { ++ /* ++ * In case we removed all notify instances, we want to remove ++ * the watcher. We won't register a new one, if no filters are ++ * set anymore. ++ */ ++ ++ TALLOC_FREE(watcher.sys_watch); ++ ++ watcher.sys_filter = watcher.filter; ++ watcher.sys_subdir_filter = watcher.subdir_filter; ++ ++ /* ++ * Only register a watcher if we have filter. ++ */ ++ if (watcher.filter != 0 || watcher.subdir_filter != 0) { ++ int ret = sys_notify_watch(entries, ++ sys_notify_ctx, ++ path, ++ &watcher.sys_filter, ++ &watcher.sys_subdir_filter, ++ notifyd_sys_callback, ++ msg_ctx, ++ &watcher.sys_watch); ++ if (ret != 0) { ++ DBG_WARNING("sys_notify_watch for [%s] " ++ "returned %s\n", ++ path, ++ strerror(errno)); ++ } ++ } + } + + DBG_DEBUG("%s has %zu instances\n", path, num_instances); + + if (num_instances == 0) { ++ TALLOC_FREE(watcher.sys_watch); ++ + status = dbwrap_record_delete(rec); + if (!NT_STATUS_IS_OK(status)) { + DBG_WARNING("dbwrap_record_delete returned %s\n", +@@ -456,13 +541,21 @@ static bool notifyd_apply_rec_change( + goto fail; + } + } else { +- value = make_tdb_data( +- (uint8_t *)instances, +- sizeof(struct notifyd_instance) * num_instances); ++ struct TDB_DATA iov[2] = { ++ { ++ .dptr = (uint8_t *)&watcher, ++ .dsize = sizeof(struct notifyd_watcher), ++ }, ++ { ++ .dptr = (uint8_t *)instances, ++ .dsize = sizeof(struct notifyd_instance) * ++ num_instances, ++ }, ++ }; + +- status = dbwrap_record_store(rec, value, 0); ++ status = dbwrap_record_storev(rec, iov, ARRAY_SIZE(iov), 0); + if (!NT_STATUS_IS_OK(status)) { +- DBG_WARNING("dbwrap_record_store returned %s\n", ++ DBG_WARNING("dbwrap_record_storev returned %s\n", + nt_errstr(status)); + goto fail; + } +@@ -706,12 +799,18 @@ static void notifyd_trigger_parser(TDB_DATA key, TDB_DATA data, + .when = tstate->msg->when }; + struct iovec iov[2]; + size_t path_len = key.dsize; ++ struct notifyd_watcher watcher = {}; + struct notifyd_instance *instances = NULL; + size_t num_instances = 0; + size_t i; ++ bool ok; + +- if (!notifyd_parse_entry(data.dptr, data.dsize, &instances, +- &num_instances)) { ++ ok = notifyd_parse_entry(data.dptr, ++ data.dsize, ++ &watcher, ++ &instances, ++ &num_instances); ++ if (!ok) { + DBG_DEBUG("Could not parse notifyd_entry\n"); + return; + } +@@ -734,9 +833,11 @@ static void notifyd_trigger_parser(TDB_DATA key, TDB_DATA data, + + if (tstate->covered_by_sys_notify) { + if (tstate->recursive) { +- i_filter = instance->internal_subdir_filter; ++ i_filter = watcher.sys_subdir_filter & ++ instance->instance.subdir_filter; + } else { +- i_filter = instance->internal_filter; ++ i_filter = watcher.sys_filter & ++ instance->instance.filter; + } + } else { + if (tstate->recursive) { +@@ -1146,46 +1247,39 @@ static int notifyd_add_proxy_syswatches(struct db_record *rec, + struct db_context *db = dbwrap_record_get_db(rec); + TDB_DATA key = dbwrap_record_get_key(rec); + TDB_DATA value = dbwrap_record_get_value(rec); +- struct notifyd_instance *instances = NULL; +- size_t num_instances = 0; +- size_t i; ++ struct notifyd_watcher watcher = {}; + char path[key.dsize+1]; + bool ok; ++ int ret; + + memcpy(path, key.dptr, key.dsize); + path[key.dsize] = '\0'; + +- ok = notifyd_parse_entry(value.dptr, value.dsize, &instances, +- &num_instances); ++ /* This is a remote database, we just need the watcher. */ ++ ok = notifyd_parse_entry(value.dptr, value.dsize, &watcher, NULL, NULL); + if (!ok) { + DBG_WARNING("Could not parse notifyd entry for %s\n", path); + return 0; + } + +- for (i=0; iinstance.filter; +- uint32_t subdir_filter = instance->instance.subdir_filter; +- int ret; ++ watcher.sys_watch = NULL; ++ watcher.sys_filter = watcher.filter; ++ watcher.sys_subdir_filter = watcher.subdir_filter; + +- /* +- * This is a remote database. Pointers that we were +- * given don't make sense locally. Initialize to NULL +- * in case sys_notify_watch fails. +- */ +- instances[i].sys_watch = NULL; +- +- ret = state->sys_notify_watch( +- db, state->sys_notify_ctx, path, +- &filter, &subdir_filter, +- notifyd_sys_callback, state->msg_ctx, +- &instance->sys_watch); +- if (ret != 0) { +- DBG_WARNING("inotify_watch returned %s\n", +- strerror(errno)); +- } ++ ret = state->sys_notify_watch(db, ++ state->sys_notify_ctx, ++ path, ++ &watcher.filter, ++ &watcher.subdir_filter, ++ notifyd_sys_callback, ++ state->msg_ctx, ++ &watcher.sys_watch); ++ if (ret != 0) { ++ DBG_WARNING("inotify_watch returned %s\n", strerror(errno)); + } + ++ memcpy(value.dptr, &watcher, sizeof(struct notifyd_watcher)); ++ + return 0; + } + +@@ -1193,21 +1287,17 @@ static int notifyd_db_del_syswatches(struct db_record *rec, void *private_data) + { + TDB_DATA key = dbwrap_record_get_key(rec); + TDB_DATA value = dbwrap_record_get_value(rec); +- struct notifyd_instance *instances = NULL; +- size_t num_instances = 0; +- size_t i; ++ struct notifyd_watcher watcher = {}; + bool ok; + +- ok = notifyd_parse_entry(value.dptr, value.dsize, &instances, +- &num_instances); ++ ok = notifyd_parse_entry(value.dptr, value.dsize, &watcher, NULL, NULL); + if (!ok) { + DBG_WARNING("Could not parse notifyd entry for %.*s\n", + (int)key.dsize, (char *)key.dptr); + return 0; + } +- for (i=0; ientries database + */ + +-bool notifyd_parse_entry( +- uint8_t *buf, +- size_t buflen, +- struct notifyd_instance **instances, +- size_t *num_instances) ++/** ++ * @brief Parse a notifyd database entry. ++ * ++ * The memory we pass down needs to be aligned. If it isn't aligned we can run ++ * into obscure errors as we just point into the data buffer. ++ * ++ * @param data The data to parse ++ * @param data_len The length of the data to parse ++ * @param watcher A pointer to store the watcher data or NULL. ++ * @param instances A pointer to store the array of notify instances or NULL. ++ * @param pnum_instances The number of elements in the array. If you just want ++ * the number of elements pass NULL for the watcher and instances pointers. ++ * ++ * @return true on success, false if an error occurred. ++ */ ++bool notifyd_parse_entry(uint8_t *data, ++ size_t data_len, ++ struct notifyd_watcher *watcher, ++ struct notifyd_instance **instances, ++ size_t *pnum_instances) + { +- if ((buflen % sizeof(struct notifyd_instance)) != 0) { +- DBG_WARNING("invalid buffer size: %zu\n", buflen); ++ size_t ilen; ++ ++ if (data_len < sizeof(struct notifyd_watcher)) { + return false; + } + +- if (instances != NULL) { +- *instances = (struct notifyd_instance *)buf; ++ if (watcher != NULL) { ++ *watcher = *((struct notifyd_watcher *)(uintptr_t)data); + } +- if (num_instances != NULL) { +- *num_instances = buflen / sizeof(struct notifyd_instance); ++ ++ ilen = data_len - sizeof(struct notifyd_watcher); ++ if ((ilen % sizeof(struct notifyd_instance)) != 0) { ++ return false; ++ } ++ ++ if (pnum_instances != NULL) { ++ *pnum_instances = ilen / sizeof(struct notifyd_instance); + } ++ if (instances != NULL) { ++ /* The (uintptr_t) cast removes a warning from -Wcast-align. */ ++ *instances = ++ (struct notifyd_instance *)(uintptr_t) ++ (data + sizeof(struct notifyd_watcher)); ++ } ++ + return true; + } +diff --git a/source3/smbd/notifyd/notifyd_private.h b/source3/smbd/notifyd/notifyd_private.h +index 36c08f47c54..db8e6e1c005 100644 +--- a/source3/smbd/notifyd/notifyd_private.h ++++ b/source3/smbd/notifyd/notifyd_private.h +@@ -20,30 +20,48 @@ + #include "lib/util/server_id.h" + #include "notifyd.h" + ++ + /* +- * notifyd's representation of a notify instance ++ * Representation of a watcher for a path ++ * ++ * This will be stored in the db. + */ +-struct notifyd_instance { +- struct server_id client; +- struct notify_instance instance; +- +- void *sys_watch; /* inotify/fam/etc handle */ ++struct notifyd_watcher { ++ /* ++ * This is an intersections of the filter the watcher is listening for. ++ */ ++ uint32_t filter; ++ uint32_t subdir_filter; + + /* +- * Filters after sys_watch took responsibility of some bits ++ * Those are inout variables passed to the sys_watcher. The sys_watcher ++ * will remove the bits it can't handle. + */ +- uint32_t internal_filter; +- uint32_t internal_subdir_filter; ++ uint32_t sys_filter; ++ uint32_t sys_subdir_filter; ++ ++ /* The handle for inotify/fam etc. */ ++ void *sys_watch; ++}; ++ ++/* ++ * Representation of a notifyd instance ++ * ++ * This will be stored in the db. ++ */ ++struct notifyd_instance { ++ struct server_id client; ++ struct notify_instance instance; + }; + + /* + * Parse an entry in the notifyd_context->entries database + */ + +-bool notifyd_parse_entry( +- uint8_t *buf, +- size_t buflen, +- struct notifyd_instance **instances, +- size_t *num_instances); ++bool notifyd_parse_entry(uint8_t *data, ++ size_t data_len, ++ struct notifyd_watcher *watcher, ++ struct notifyd_instance **instances, ++ size_t *num_instances); + + #endif +-- +2.46.1 + diff --git a/samba-4.23-fix-cmocka.patch b/samba-4.23-fix-cmocka.patch deleted file mode 100644 index 26289d6..0000000 --- a/samba-4.23-fix-cmocka.patch +++ /dev/null @@ -1,38 +0,0 @@ -From b1ec803f420b2c6d3c5c83d70c6875a7f36b15fc Mon Sep 17 00:00:00 2001 -From: Andreas Schneider -Date: Fri, 21 Nov 2025 15:33:32 +0100 -Subject: [PATCH] s4:dsdb: Do not declare cm_print_error() - -This is part of the cmocka.h header file. - -Signed-off-by: Andreas Schneider -Reviewed-by: Martin Schwenke -Reviewed-by: Volker Lendecke - -Autobuild-User(master): Volker Lendecke -Autobuild-Date(master): Mon Nov 24 11:28:08 UTC 2025 on atb-devel-224 - -(cherry picked from commit 5a981663e4f677042ba80191770100aecff2120a) ---- - source4/dsdb/samdb/ldb_modules/tests/test_group_audit.c | 5 ----- - 1 file changed, 5 deletions(-) - -diff --git a/source4/dsdb/samdb/ldb_modules/tests/test_group_audit.c b/source4/dsdb/samdb/ldb_modules/tests/test_group_audit.c -index f7075f3485e..12c464b49c7 100644 ---- a/source4/dsdb/samdb/ldb_modules/tests/test_group_audit.c -+++ b/source4/dsdb/samdb/ldb_modules/tests/test_group_audit.c -@@ -103,11 +103,6 @@ void audit_message_send( - - #define check_group_change_message(m, u, a, e) \ - _check_group_change_message(m, u, a, e, __FILE__, __LINE__); --/* -- * declare the internal cmocka cm_print_error so that we can output messages -- * in sub unit format -- */ --void cm_print_error(const char * const format, ...); - - /* - * Validate a group change JSON audit message --- -2.52.0 - diff --git a/samba.spec b/samba.spec index b49a21a..a10701d 100644 --- a/samba.spec +++ b/samba.spec @@ -6,17 +6,7 @@ # or # rpmbuild --rebuild --with testsuite samba.src.rpm # -# If you just want to run a single test, you can use: -# fedpkg mockbuild --with testsuite -- --define 'SAMBA_TESTS regex' samba.src.rpm -# or -# rpmbuild --rebuild --with testsuite --define='SAMBA_TESTS regex' samba.src.rpm -# -%bcond testsuite 0 -%if %{with testsuite} -# As the file list is empty for running just the tests, we have empty debuginfo -# package. Disable it to avoid error reporting. -%global debug_package %{nil} -%endif +%bcond_with testsuite # Build with internal talloc, tevent, tdb # @@ -24,120 +14,141 @@ # or # rpmbuild --rebuild --with=testsuite --with=includelibs samba.src.rpm # -%bcond includelibs 0 +%bcond_with includelibs # fedpkg mockbuild --with=ccache -%bcond ccache 0 +%bcond_with ccache # ctdb is enabled by default, you can disable it with: --without clustering -%bcond clustering 1 +%bcond_without clustering # Define _make_verbose if it doesn't exist (RHEL8) %{!?_make_verbose:%define _make_verbose V=1 VERBOSE=1} # Build with Active Directory Domain Controller support by default on Fedora %if 0%{?fedora} -%bcond dc 1 +%bcond_without dc %else -%bcond dc 0 +%bcond_with dc %endif # Build a libsmbclient package by default -%bcond libsmbclient 1 +%bcond_without libsmbclient # Build a libwbclient package by default -%bcond libwbclient 1 +%bcond_without libwbclient # Build with winexe by default %if 0%{?rhel} %ifarch x86_64 -%bcond winexe 1 +%bcond_without winexe %else -%bcond winexe 0 +%bcond_with winexe #endifarch %endif %else -%bcond winexe 1 +%bcond_without winexe %endif # Build vfs_ceph module and ctdb cepth mutex helper by default on 64bit Fedora %if 0%{?fedora} %ifarch aarch64 ppc64le s390x x86_64 riscv64 -%bcond vfs_cephfs 1 -%bcond ceph_mutex 1 +%bcond_without vfs_cephfs +%bcond_without ceph_mutex %else -%bcond vfs_cephfs 0 -%bcond ceph_mutex 0 +%bcond_with vfs_cephfs +%bcond_with ceph_mutex #endifarch %endif %else -%bcond vfs_cephfs 0 -%bcond ceph_mutex 0 +%bcond_with vfs_cephfs +%bcond_with ceph_mutex #endif fedora %endif +# Build vfs_gluster module by default on 64bit Fedora +%global is_rhgs 0 +%if "%{dist}" == ".el7rhgs" || "%{dist}" == ".el8rhgs" +%global is_rhgs 1 +%endif + %if 0%{?fedora} %ifarch aarch64 ppc64le s390x x86_64 riscv64 -%bcond vfs_glusterfs 1 +%bcond_without vfs_glusterfs %else -%bcond vfs_glusterfs 0 +%bcond_with vfs_glusterfs #endifarch %endif +#else rhel +%else + +%if 0%{?is_rhgs} +# Enable on rhgs x86_64 +%ifarch x86_64 +%bcond_without vfs_glusterfs +%else +%bcond_with vfs_glusterfs +#endifarch +%endif +%else +%bcond_with vfs_glusterfs +#endif is_rhgs +%endif + #endif fedora %endif # Build vfs_io_uring module by default on 64bit Fedora +%if 0%{?fedora} || 0%{?rhel} >= 8 + %ifarch aarch64 ppc64le s390x x86_64 riscv64 -%bcond vfs_io_uring 1 +%bcond_without vfs_io_uring %else -%bcond vfs_io_uring 0 +%bcond_with vfs_io_uring #endifarch %endif +%else +%bcond_with vfs_io_uring +#endif fedora || rhel >= 8 +%endif + # Build the ctdb-pcp-pmda package by default on Fedora, except for i686 where # pcp is no longer supported %if 0%{?fedora} %ifnarch i686 -%bcond pcp_pmda 1 +%bcond_without pcp_pmda %endif %else -%bcond pcp_pmda 0 +%bcond_with pcp_pmda %endif # Build the etcd helpers by default on Fedora %if 0%{?fedora} -# disable etcd mutex helper as etcd is orphaned in Fedora now -%bcond etcd_mutex 0 +%bcond_without etcd_mutex %else -%bcond etcd_mutex 0 +%bcond_with etcd_mutex %endif -# Build the prometheus exporter by default on Fedora -%if 0%{?fedora} -%bcond prometheus 1 +%if 0%{?fedora} || 0%{?rhel} >= 9 +%bcond_without gpupdate %else -%bcond prometheus 0 +%bcond_with gpupdate %endif -%ifarch aarch64 ppc64le s390x x86_64 riscv64 +%ifarch aarch64 ppc64le s390x x86_64 %bcond lmdb 1 %else %bcond lmdb 0 %endif -%if 0%{?fedora} >= 43 -%bcond varlink 1 -%else -%bcond varlink 0 -%endif - -%global samba_version 4.23.4 +%global samba_version 4.21.9 # The release field is extended: # [.][.]%%{?dist}[.] @@ -165,7 +176,7 @@ %global libdcerpc_so_version 0 %global libndr_krb5pac_so_version 0 %global libndr_nbt_so_version 0 -%global libndr_so_version 6 +%global libndr_so_version 5 %global libndr_standard_so_version 0 %global libnetapi_so_version 1 %global libsamba_credentials_so_version 1 @@ -182,9 +193,9 @@ %global libsmbclient_so_version 0 %global libwbclient_so_version 0 -%global talloc_version 2.4.3 -%global tdb_version 1.4.14 -%global tevent_version 0.17.1 +%global talloc_version 2.4.2 +%global tdb_version 1.4.12 +%global tevent_version 0.16.1 %global required_mit_krb5 1.20.1 @@ -239,11 +250,11 @@ Source18: samba-winbind-systemd-sysusers.conf Source201: README.downgrade Source202: samba.abignore -Patch0: samba-4.23-fix-cmocka.patch +Patch0: samba-4.21.0-s3-notifyd.patch Requires(pre): %{name}-common = %{samba_depver} Requires: %{name}-common = %{samba_depver} -Requires: %{name}-ndr-libs = %{samba_depver} +Requires: %{name}-common-libs = %{samba_depver} Requires: %{name}-common-tools = %{samba_depver} Requires: %{name}-client-libs = %{samba_depver} Requires: %{name}-libs = %{samba_depver} @@ -275,7 +286,7 @@ Obsoletes: samba-swat < %{samba_depver} Provides: samba4-swat = %{samba_depver} Obsoletes: samba4-swat < %{samba_depver} -Provides: bundled(libreplace) = %{samba_depver} +Provides: bundled(libreplace) BuildRequires: make BuildRequires: gcc @@ -303,7 +314,6 @@ BuildRequires: libicu-devel BuildRequires: libcmocka-devel BuildRequires: libtirpc-devel BuildRequires: libuuid-devel -BuildRequires: libxcrypt-devel BuildRequires: libxslt %if %{with lmdb} BuildRequires: lmdb @@ -340,19 +350,8 @@ BuildRequires: xz BuildRequires: zlib-devel >= 1.2.3 BuildRequires: pkgconfig(libsystemd) -# TODO FIXME This is not in RHEL yet -%if 0%{?fedora} >= 43 -BuildRequires: pkgconfig(libngtcp2) -BuildRequires: pkgconfig(libngtcp2_crypto_gnutls) -%else -Provides: bundled(ngtcp2) -%endif -%if %{with varlink} -BuildRequires: pkgconfig(libvarlink) >= 24 -%endif - -%ifnarch i686 +%ifnarch i686 riscv64 %if 0%{?fedora} >= 37 BuildRequires: mold %endif @@ -380,11 +379,10 @@ BuildRequires: librados-devel %if %{with etcd_mutex} BuildRequires: python3-etcd %endif -%if %{with prometheus} -BuildRequires: libevent-devel -%endif +%if %{with gpupdate} BuildRequires: cepces-certmonger >= 0.3.8 +%endif # pidl requirements BuildRequires: perl(ExtUtils::MakeMaker) @@ -465,7 +463,7 @@ Unix. Summary: Samba client programs Requires(pre): %{name}-common = %{samba_depver} Requires: %{name}-common = %{samba_depver} -Requires: %{name}-ndr-libs = %{samba_depver} +Requires: %{name}-common-libs = %{samba_depver} Requires: %{name}-client-libs = %{samba_depver} Requires: libldb = %{samba_depver} %if %{with libsmbclient} @@ -481,69 +479,19 @@ Obsoletes: samba4-client < %{samba_depver} Requires(post): %{_sbindir}/update-alternatives Requires(postun): %{_sbindir}/update-alternatives -Provides: bundled(libreplace) = %{samba_depver} +Provides: bundled(libreplace) %description client The %{name}-client package provides some SMB/CIFS clients to complement the built-in SMB/CIFS filesystem in Linux. These clients allow access of SMB/CIFS shares and printing to SMB/CIFS printers. -### CORE-LIBS -%package core-libs -Summary: Samba core libraries -Requires(pre): %{name}-common = %{samba_depver} -Requires: %{name}-common = %{samba_depver} - -Provides: bundled(libreplace) = %{samba_depver} - -%description core-libs -The samba-core-libs package contains foundational libraries needed by -both Samba servers and clients. This includes error handling, utilities, -and basic support libraries. - -### NDR-LIBS -%package ndr-libs -Summary: Samba NDR libraries -Requires(pre): %{name}-common = %{samba_depver} -Requires: %{name}-common = %{samba_depver} -Requires: %{name}-core-libs = %{samba_depver} - -Provides: %{name}-common-libs = %{samba_depver} -Obsoletes: %{name}-common-libs < %{samba_depver} - -%if %{without dc} && %{without testsuite} -Obsoletes: samba-dc < %{samba_depver} -Obsoletes: samba-dc-libs < %{samba_depver} -Obsoletes: samba-dc-bind-dlz < %{samba_depver} -%endif - -# ctdb-tests package has been dropped if we do not build the testsuite -%if %{with clustering} -%if %{without testsuite} -Obsoletes: ctdb-tests < %{samba_depver} -Obsoletes: ctdb-tests-debuginfo < %{samba_depver} -# endif without testsuite -%endif -# endif with clustering -%endif - -# We only build glusterfs for RHGS and Fedora, so obsolete it on other versions -# of the distro -%if %{without vfs_glusterfs} -Obsoletes: samba-vfs-glusterfs < %{samba_depver} -# endif without vfs_glusterfs -%endif - -%description ndr-libs -The samba-ndr-libs package contains NDR (Network Data Representation) -encoding libraries used by both Samba servers and clients. - ### CLIENT-LIBS %package client-libs Summary: Samba client libraries Requires(pre): %{name}-common = %{samba_depver} Requires: %{name}-common = %{samba_depver} -Requires: %{name}-ndr-libs = %{samba_depver} +Requires: %{name}-common-libs = %{samba_depver} Requires: libldb = %{samba_depver} %if %{with libwbclient} Requires: libwbclient = %{samba_depver} @@ -573,10 +521,50 @@ Obsoletes: samba4-common < %{samba_depver} samba-common provides files necessary for both the server and client packages of Samba. +### COMMON-LIBS +%package common-libs +Summary: Libraries used by both Samba servers and clients +Requires(pre): samba-common = %{samba_depver} +Requires: samba-common = %{samba_depver} +Requires: %{name}-client-libs = %{samba_depver} +Requires: libldb = %{samba_depver} +%if %{with libwbclient} +Requires: libwbclient = %{samba_depver} +%endif + +Provides: bundled(libreplace) + +%if %{without dc} && %{without testsuite} +Obsoletes: samba-dc < %{samba_depver} +Obsoletes: samba-dc-libs < %{samba_depver} +Obsoletes: samba-dc-bind-dlz < %{samba_depver} +%endif + +# ctdb-tests package has been dropped if we do not build the testsuite +%if %{with clustering} +%if %{without testsuite} +Obsoletes: ctdb-tests < %{samba_depver} +Obsoletes: ctdb-tests-debuginfo < %{samba_depver} +# endif without testsuite +%endif +# endif with clustering +%endif + +# We only build glusterfs for RHGS and Fedora, so obsolete it on other versions +# of the distro +%if %{without vfs_glusterfs} +Obsoletes: samba-vfs-glusterfs < %{samba_depver} +# endif without vfs_glusterfs +%endif + +%description common-libs +The samba-common-libs package contains internal libraries needed by the +SMB/CIFS clients. + ### COMMON-TOOLS %package common-tools Summary: Tools for Samba clients -Requires: samba-ndr-libs = %{samba_depver} +Requires: samba-common-libs = %{samba_depver} Requires: samba-client-libs = %{samba_depver} Requires: samba-libs = %{samba_depver} Requires: samba-ldb-ldap-modules = %{samba_depver} @@ -586,7 +574,7 @@ Requires: libnetapi = %{samba_depver} Requires: libwbclient = %{samba_depver} %endif -Provides: bundled(libreplace) = %{samba_depver} +Provides: bundled(libreplace) %description common-tools The samba-common-tools package contains tools for SMB/CIFS clients. @@ -614,7 +602,7 @@ and for GPO management on domain members. ### RPC %package dcerpc Summary: DCE RPC binaries -Requires: samba-ndr-libs = %{samba_depver} +Requires: samba-common-libs = %{samba_depver} Requires: samba-client-libs = %{samba_depver} Requires: samba-libs = %{samba_depver} Requires: libldb = %{samba_depver} @@ -632,7 +620,7 @@ The samba-dcerpc package contains binaries that serve DCERPC over named pipes. Summary: Samba AD Domain Controller Requires: %{name} = %{samba_depver} Requires: %{name}-client-libs = %{samba_depver} -Requires: %{name}-ndr-libs = %{samba_depver} +Requires: %{name}-common-libs = %{samba_depver} Requires: %{name}-common-tools = %{samba_depver} Requires: %{name}-tools = %{samba_depver} Requires: %{name}-libs = %{samba_depver} @@ -656,7 +644,7 @@ Requires: bind-utils Provides: samba4-dc = %{samba_depver} Obsoletes: samba4-dc < %{samba_depver} -Provides: bundled(libreplace) = %{samba_depver} +Provides: bundled(libreplace) %description dc The samba-dc package provides AD Domain Controller functionality @@ -676,7 +664,7 @@ The samba-dc-provision package provides files to setup a domain controller %package dc-libs Summary: Samba AD Domain Controller Libraries Requires: %{name}-client-libs = %{samba_depver} -Requires: %{name}-ndr-libs = %{samba_depver} +Requires: %{name}-common-libs = %{samba_depver} Requires: %{name}-libs = %{samba_depver} Requires: libldb = %{samba_depver} Requires: libwbclient = %{samba_depver} @@ -684,7 +672,7 @@ Requires: libwbclient = %{samba_depver} Provides: samba4-dc-libs = %{samba_depver} Obsoletes: samba4-dc-libs < %{samba_depver} -Provides: bundled(libreplace) = %{samba_depver} +Provides: bundled(libreplace) %description dc-libs The %{name}-dc-libs package contains the libraries needed by the DC to @@ -703,7 +691,7 @@ Requires: bind Requires: libldb = %{samba_depver} Requires: libwbclient = %{samba_depver} -Provides: bundled(libreplace) = %{samba_depver} +Provides: bundled(libreplace) %description dc-bind-dlz The %{name}-dc-bind-dlz package contains the libraries for bind to manage all @@ -714,10 +702,8 @@ name server related details of Samba AD. ### DEVEL %package devel Summary: Developer tools for Samba libraries -Requires: %{name}-core-libs = %{samba_depver} -Requires: %{name}-client-libs = %{samba_depver} -Requires: %{name}-ndr-libs = %{samba_depver} Requires: %{name}-libs = %{samba_depver} +Requires: %{name}-client-libs = %{samba_depver} Requires: %{name}-dc-libs = %{samba_depver} Requires: libnetapi = %{samba_depver} @@ -741,7 +727,7 @@ Requires: %{name}-libs = %{samba_depver} Requires: libldb = %{samba_depver} Requires: libwbclient = %{samba_depver} -Provides: bundled(libreplace) = %{samba_depver} +Provides: bundled(libreplace) %description vfs-cephfs Samba VFS module for Ceph distributed storage system integration. @@ -758,7 +744,7 @@ Requires: %{name}-client-libs = %{samba_depver} Requires: libldb = %{samba_depver} Requires: libwbclient = %{samba_depver} -Provides: bundled(libreplace) = %{samba_depver} +Provides: bundled(libreplace) %description vfs-iouring Samba VFS module for io_uring instance integration. @@ -772,7 +758,7 @@ Summary: Samba VFS module for GlusterFS Requires: glusterfs-api >= 3.4.0.16 Requires: glusterfs >= 3.4.0.16 Requires: %{name} = %{samba_depver} -Requires: %{name}-ndr-libs = %{samba_depver} +Requires: %{name}-common-libs = %{samba_depver} Requires: %{name}-client-libs = %{samba_depver} Requires: %{name}-libs = %{samba_depver} Requires: libldb = %{samba_depver} @@ -783,13 +769,14 @@ Requires: libwbclient = %{samba_depver} Obsoletes: samba-glusterfs < %{samba_depver} Provides: samba-glusterfs = %{samba_depver} -Provides: bundled(libreplace) = %{samba_depver} +Provides: bundled(libreplace) %description vfs-glusterfs Samba VFS module for GlusterFS integration. %endif ### GPUPDATE +%if %{with gpupdate} %package gpupdate Summary: Samba GPO support for clients Requires: cepces-certmonger @@ -798,12 +785,14 @@ Requires: %{name}-ldb-ldap-modules = %{samba_depver} Requires: python3-%{name} = %{samba_depver} # samba-tool needs python3-samba-dc also on non-dc build Requires: python3-%{name}-dc = %{samba_depver} -BuildArch: noarch %description gpupdate This package provides the samba-gpupdate tool to apply Group Policy Objects (GPO) on Samba clients. +#endif with gpupdate +%endif + ### KRB5-PRINTING %package krb5-printing Summary: Samba CUPS backend for printing with Kerberos @@ -823,7 +812,7 @@ the Kerberos credentials cache of the user issuing the print job. %package ldb-ldap-modules Summary: Samba ldap modules for ldb Requires: %{name}-client-libs = %{samba_depver} -Requires: %{name}-ndr-libs = %{samba_depver} +Requires: %{name}-common-libs = %{samba_depver} Requires: libldb = %{samba_depver} Requires: libwbclient = %{samba_depver} @@ -834,7 +823,7 @@ samba-gpupdate. ### LIBS %package libs Summary: Samba libraries -Requires: %{name}-ndr-libs = %{samba_depver} +Requires: %{name}-common-libs = %{samba_depver} Requires: %{name}-client-libs = %{samba_depver} Requires: libldb = %{samba_depver} %if %{with libwbclient} @@ -844,7 +833,7 @@ Requires: libwbclient = %{samba_depver} Provides: samba4-libs = %{samba_depver} Obsoletes: samba4-libs < %{samba_depver} -Provides: bundled(libreplace) = %{samba_depver} +Provides: bundled(libreplace) %description libs The %{name}-libs package contains the libraries needed by programs that link @@ -855,7 +844,7 @@ against the SMB, RPC and other protocols provided by the Samba suite. Summary: The NETAPI library Requires(pre): %{name}-common = %{samba_depver} Requires: %{name}-common = %{samba_depver} -Requires: %{name}-ndr-libs = %{samba_depver} +Requires: %{name}-common-libs = %{samba_depver} Requires: %{name}-client-libs = %{samba_depver} Requires: libldb = %{samba_depver} Requires: libwbclient = %{samba_depver} @@ -877,7 +866,7 @@ develop programs that link against the NETAPI library in the Samba suite. Summary: The SMB client library Requires(pre): %{name}-common = %{samba_depver} Requires: %{name}-common = %{samba_depver} -Requires: %{name}-ndr-libs = %{samba_depver} +Requires: %{name}-common-libs = %{samba_depver} Requires: %{name}-client-libs = %{samba_depver} Requires: libldb = %{samba_depver} %if %{with libwbclient} @@ -902,7 +891,7 @@ suite. %if %{with libwbclient} %package -n libwbclient Summary: The winbind client library -# libwbclient.so only links to libc - no samba library dependencies needed +Requires: %{name}-client-libs = %{samba_depver} Conflicts: sssd-libwbclient %description -n libwbclient @@ -927,7 +916,7 @@ library. %package -n python3-%{name} Summary: Samba Python3 libraries Requires: %{name}-client-libs = %{samba_depver} -Requires: %{name}-ndr-libs = %{samba_depver} +Requires: %{name}-common-libs = %{samba_depver} Requires: %{name}-libs = %{samba_depver} Requires: %{name}-dc-libs = %{samba_depver} Requires: python3-cryptography @@ -945,7 +934,7 @@ Requires: libsmbclient = %{samba_depver} Requires: libwbclient = %{samba_depver} %endif -Provides: bundled(libreplace) = %{samba_depver} +Provides: bundled(libreplace) %description -n python3-%{name} The python3-%{name} package contains the Python 3 libraries needed by programs @@ -997,7 +986,7 @@ Requires: %{name} = %{samba_depver} Requires: %{name}-common = %{samba_depver} Requires: %{name}-winbind = %{samba_depver} -Requires: %{name}-ndr-libs = %{samba_depver} +Requires: %{name}-common-libs = %{samba_depver} Requires: %{name}-client-libs = %{samba_depver} Requires: %{name}-libs = %{samba_depver} Requires: %{name}-test-libs = %{samba_depver} @@ -1019,7 +1008,7 @@ Requires: perl(Archive::Tar) Provides: samba4-test = %{samba_depver} Obsoletes: samba4-test < %{samba_depver} -Provides: bundled(libreplace) = %{samba_depver} +Provides: bundled(libreplace) %description test %{name}-test provides testing tools for both the server and client @@ -1028,7 +1017,7 @@ packages of Samba. ### TEST-LIBS %package test-libs Summary: Libraries need by the testing tools for Samba servers and clients -Requires: %{name}-ndr-libs = %{samba_depver} +Requires: %{name}-common-libs = %{samba_depver} Requires: %{name}-client-libs = %{samba_depver} Requires: %{name}-libs = %{samba_depver} Requires: libldb = %{samba_depver} @@ -1039,7 +1028,7 @@ Requires: libwbclient = %{samba_depver} Provides: %{name}-test-devel = %{samba_depver} Obsoletes: %{name}-test-devel < %{samba_depver} -Provides: bundled(libreplace) = %{samba_depver} +Provides: bundled(libreplace) %description test-libs %{name}-test-libs provides libraries required by the testing tools. @@ -1049,7 +1038,6 @@ Provides: bundled(libreplace) = %{samba_depver} Summary: Provides support for non-root user shares Requires: %{name} = %{samba_depver} Requires: %{name}-common-tools = %{samba_depver} -BuildArch: noarch %description usershares Installing this package will provide a configuration file, group and @@ -1061,8 +1049,8 @@ as a user using the `net usershare` command. Summary: Samba winbind Requires(pre): %{name}-common = %{samba_depver} Requires: %{name}-common = %{samba_depver} -Requires: %{name}-ndr-libs = %{samba_depver} -Requires(post): %{name}-ndr-libs = %{samba_depver} +Requires: %{name}-common-libs = %{samba_depver} +Requires(post): %{name}-common-libs = %{samba_depver} Requires: %{name}-common-tools = %{samba_depver} Requires: %{name}-client-libs = %{samba_depver} Requires(post): %{name}-client-libs = %{samba_depver} @@ -1084,7 +1072,7 @@ Obsoletes: samba4-winbind < %{samba_depver} # Old NetworkManager expects the dispatcher scripts in a different place Conflicts: NetworkManager < 1.20 -Provides: bundled(libreplace) = %{samba_depver} +Provides: bundled(libreplace) %description winbind The samba-winbind package provides the winbind NSS library, and some client @@ -1095,7 +1083,7 @@ Windows user and group accounts on Linux. %package winbind-clients Summary: Samba winbind clients Requires: %{name}-common = %{samba_depver} -Requires: %{name}-ndr-libs = %{samba_depver} +Requires: %{name}-common-libs = %{samba_depver} Requires: %{name}-client-libs = %{samba_depver} Requires: %{name}-libs = %{samba_depver} Requires: %{name}-winbind = %{samba_depver} @@ -1107,7 +1095,7 @@ Requires: libwbclient = %{samba_depver} Provides: samba4-winbind-clients = %{samba_depver} Obsoletes: samba4-winbind-clients < %{samba_depver} -Provides: bundled(libreplace) = %{samba_depver} +Provides: bundled(libreplace) %description winbind-clients The samba-winbind-clients package provides the wbinfo and ntlm_auth @@ -1137,7 +1125,7 @@ Requires(post): %{_sbindir}/update-alternatives Requires(postun): %{_sbindir}/update-alternatives Requires(preun): %{_sbindir}/update-alternatives -Provides: bundled(libreplace) = %{samba_depver} +Provides: bundled(libreplace) %description winbind-krb5-locator The winbind krb5 locator is a plugin for the system kerberos library to allow @@ -1153,7 +1141,7 @@ Requires: libwbclient = %{samba_depver} %endif Requires: pam -Provides: bundled(libreplace) = %{samba_depver} +Provides: bundled(libreplace) %description winbind-modules The samba-winbind-modules package provides the NSS library and a PAM module @@ -1165,11 +1153,11 @@ necessary to communicate to the Winbind Daemon Summary: Samba Winexe Windows Binary License: GPL-3.0-only Requires: %{name}-client-libs = %{samba_depver} -Requires: %{name}-ndr-libs = %{samba_depver} +Requires: %{name}-common-libs = %{samba_depver} Requires: libldb = %{samba_depver} Requires: libwbclient = %{samba_depver} -Provides: bundled(libreplace) = %{samba_depver} +Provides: bundled(libreplace) %description winexe Winexe is a Remote Windows-command executor @@ -1180,7 +1168,7 @@ Winexe is a Remote Windows-command executor %package -n ctdb Summary: A Clustered Database based on Samba's Trivial Database (TDB) -Requires: %{name}-ndr-libs = %{samba_depver} +Requires: %{name}-common-libs = %{samba_depver} Requires: %{name}-client-libs = %{samba_depver} Requires: %{name}-winbind-clients = %{samba_depver} @@ -1205,7 +1193,7 @@ Requires(post): systemd-units Requires(preun): systemd-units Requires(postun): systemd-units -Provides: bundled(libreplace) = %{samba_depver} +Provides: bundled(libreplace) %description -n ctdb CTDB is a cluster implementation of the TDB database used by Samba and other @@ -1233,7 +1221,6 @@ Performance Co-Pilot (PCP) support for CTDB Summary: CTDB ETCD mutex helper Requires: ctdb = %{samba_depver} Requires: python3-etcd -BuildArch: noarch %description -n ctdb-etcd-mutex Support for using an existing ETCD cluster as a mutex helper for CTDB @@ -1256,29 +1243,15 @@ Support for using an existing CEPH cluster as a mutex helper for CTDB #endif with clustering %endif -%if %{with prometheus} - -%package prometheus -Summary: SMB Prometheus exporter -Requires: samba = %{samba_depver} - -%description prometheus -Support for exporting metrics via Prometheus - -#endif with prometheus -%endif - ### LIBLDB %package -n libldb Summary: A schema-less, ldap like, API and database License: LGPL-3.0-or-later -%if %{without includelibs} Requires: libtalloc%{?_isa} >= %{talloc_version} Requires: libtdb%{?_isa} >= %{tdb_version} Requires: libtevent%{?_isa} >= %{tevent_version} -# /endif without includelibs -%endif +Provides: bundled(libreplace) Obsoletes: libldb < 0:2.10 Provides: libldb = 0:2.10 Provides: libldb = %{samba_depver} @@ -1292,12 +1265,9 @@ servers, or use local tdb databases. Summary: Developer tools for the LDB library License: LGPL-3.0-or-later Requires: libldb%{?_isa} = %{samba_depver} -%if %{without includelibs} Requires: libtdb-devel%{?_isa} >= %{tdb_version} Requires: libtalloc-devel%{?_isa} >= %{talloc_version} Requires: libtevent-devel%{?_isa} >= %{tevent_version} -# /endif without includelibs -%endif Obsoletes: libldb-devel < 0:2.10 Provides: libldb-devel = 0:2.10 @@ -1322,10 +1292,7 @@ Tools to manage LDB files Summary: Python bindings for the LDB library License: LGPL-3.0-or-later Requires: libldb%{?_isa} = %{samba_depver} -%if %{without includelibs} Requires: python3-tdb%{?_isa} >= %{tdb_version} -# /endif without includelibs -%endif Requires: samba-client-libs = %{samba_depver} %{?python_provide:%python_provide python3-ldb} @@ -1353,13 +1320,6 @@ xzcat %{SOURCE0} | gpgv2 --quiet --keyring %{SOURCE2} %{SOURCE1} - # Make sure we do not build with heimdal code rm -rfv third_party/heimdal -%if %{with testsuite} -# WARNING: Don't change that for production! -# -# Shorten the priviliged dir, as unix sockets only have 108 chars -sed -i 's/#define WINBINDD_PRIV_SOCKET_SUBDIR.*/#define WINBINDD_PRIV_SOCKET_SUBDIR "wb_priv"/' nsswitch/winbind_struct_protocol.h -%endif - %build %if %{with includelibs} %global _talloc_lib ,talloc,pytalloc,pytalloc-util @@ -1425,8 +1385,6 @@ if [ -n "${CCACHE}" ]; then fi %endif -# workaround https://gitlab.com/ita1024/waf/-/issues/2472 -export PYTHONARCHDIR=%{python3_sitearch} %configure \ --enable-fhs \ --with-piddir=/run \ @@ -1466,12 +1424,6 @@ export PYTHONARCHDIR=%{python3_sitearch} %endif %if %{with etcd_mutex} --enable-etcd-reclock \ -%endif -%if %{with prometheus} - --with-prometheus-exporter \ -%endif -%if %{with varlink} - --with-systemd-userdb \ %endif --with-profiling-data \ --with-systemd \ @@ -1517,7 +1469,6 @@ install -d -m 0755 %{buildroot}/var/lib/samba/sysvol install -d -m 0755 %{buildroot}/var/lib/samba/usershares install -d -m 0755 %{buildroot}/var/lib/samba/winbindd_privileged install -d -m 0755 %{buildroot}/var/log/samba/old -install -d -m 0755 %{buildroot}/run/ctdb install -d -m 0755 %{buildroot}/run/samba install -d -m 0755 %{buildroot}/run/winbindd install -d -m 0755 %{buildroot}/%{_libdir}/samba @@ -1592,6 +1543,11 @@ for i in \ done %endif +%if %{without gpupdate} +rm -f %{buildroot}%{_sbindir}/samba-gpupdate +rm -f %{buildroot}%{_mandir}/man8/samba-gpupdate.8* +%endif + %if %{without vfs_glusterfs} rm -f %{buildroot}%{_mandir}/man8/vfs_glusterfs.8* %endif @@ -1651,37 +1607,20 @@ touch %{buildroot}%{_libexecdir}/ctdb/statd_callout # in the timestamp so the year 2038 problem is deferred till 2446. # https://bugzilla.samba.org/show_bug.cgi?id=14546 # -if [ "$(df --portability --print-type "$(pwd)" | grep -c ext4)" == "1" ]; then - cat > selftest/knownfail.d/fedora%{dist} << EOF -^samba3.smb2.timestamps.time_t_15032385535 -^samba3.smb2.timestamps.time_t_10000000000 -^samba3.smb2.timestamps.time_t_4294967295 -EOF -fi - -echo -echo "Content of selftest/knownfail.d/fedora%{dist}:" -cat selftest/knownfail.d/fedora%{dist} || true - -cat >> selftest/skip << EOF -# FIXME: Investigate why it fails. Might be CUPS is not running? -^samba3.rpc.spoolss.printserver -EOF - -echo -echo "Content of selftest/skip:" -cat selftest/skip +for t in samba3.smb2.timestamps.time_t_15032385535 \ + samba3.smb2.timestamps.time_t_10000000000 \ + samba3.smb2.timestamps.time_t_4294967295 \ + ; do + echo "^$t" >> selftest/knownfail.d/fedora.%{dist} +done +cat selftest/knownfail.d/fedora.%{dist} export TDB_NO_FSYNC=1 export NMBD_DONT_LOG_STDOUT=1 export SMBD_DONT_LOG_STDOUT=1 export WINBINDD_DONT_LOG_STDOUT=1 export SAMBA_DCERPCD_DONT_LOG_STDOUT=1 -%if "x%{?SAMBA_TESTS}" != "x" -%{__make} %{?_smp_mflags} test FAIL_IMMEDIATELY=1 TESTS="%{SAMBA_TESTS}" -%else %{__make} %{?_smp_mflags} test FAIL_IMMEDIATELY=1 -%endif #endif with testsuite %endif @@ -1727,7 +1666,7 @@ fi %ldconfig_scriptlets client-libs -%ldconfig_scriptlets ndr-libs +%ldconfig_scriptlets common-libs %if %{with dc} %ldconfig_scriptlets dc-libs @@ -1745,12 +1684,12 @@ fi %post krb5-printing %{_sbindir}/update-alternatives --install %{_libexecdir}/samba/cups_backend_smb \ - cups_backend_smb \ - %{_libexecdir}/samba/smbspool_krb5_wrapper 50 + cups_backend_smb \ + %{_libexecdir}/samba/smbspool_krb5_wrapper 50 %postun krb5-printing if [ $1 -eq 0 ] ; then - %{_sbindir}/update-alternatives --remove cups_backend_smb %{_libexecdir}/samba/smbspool_krb5_wrapper + %{_sbindir}/update-alternatives --remove cups_backend_smb %{_libexecdir}/samba/smbspool_krb5_wrapper fi %ldconfig_scriptlets libs @@ -2021,104 +1960,33 @@ fi #endif with includelibs %endif -### CORE-LIBS -%files core-libs -%dir %{_libdir}/samba - -# -# Tier 0: Private libraries - libc only dependencies -# -%{_libdir}/samba/libreplace-private-samba.so -%{_libdir}/samba/libsocket-blocking-private-samba.so -%{_libdir}/samba/libsys-rw-private-samba.so -%{_libdir}/samba/libtime-basic-private-samba.so - -# -# Tier 1: Private libraries - system libs (libtalloc, libsystemd) -# -%{_libdir}/samba/libsamba-debug-private-samba.so -%{_libdir}/samba/libserver-role-private-samba.so - -# -# Tier 1: Public libraries - system libs (libtalloc) -# -%{_libdir}/libsamba-errors.so.%{libsamba_errors_so_version}* - -# -# Tier 2: Private libraries - adds gnutls -# -%{_libdir}/samba/libgenrand-private-samba.so - -# -# Tier 2: Public libraries - adds gnutls, icu, tevent -# -%{_libdir}/libsamba-util.so.%{libsamba_util_so_version}* -%{_libdir}/libtevent-util.so.%{libtevent_util_so_version}* - -### NDR-LIBS -%files ndr-libs - -# -# Core NDR library -# -%{_libdir}/libndr.so.%{libndr_so_version}* - -# -# Tier 0: libc only dependencies -# -%{_libdir}/samba/libutil-setid-private-samba.so -%{_libdir}/samba/libutil-tdb-private-samba.so - -# -# Tier 1: system libs only (libtalloc) -# -%{_libdir}/samba/libiov-buf-private-samba.so -%{_libdir}/samba/libstable-sort-private-samba.so -%{_libdir}/samba/libtalloc-report-private-samba.so -%{_libdir}/samba/libtalloc-report-printf-private-samba.so - -# -# Tier 2: depends on core-libs (debug, replace) -# -%{_libdir}/samba/libflag-mapping-private-samba.so -%{_libdir}/samba/libinterfaces-private-samba.so -%{_libdir}/samba/libtdb-wrap-private-samba.so - -# -# Tier 3: depends on core-libs (util, errors, ndr) -# -%{_libdir}/samba/libdbwrap-private-samba.so -%{_libdir}/samba/libsamba3-util-private-samba.so -%{_libdir}/samba/libutil-reg-private-samba.so - -# -# Tier 4: depends on core-libs + Tier 3 libs -# -%{_libdir}/samba/libsamba-security-private-samba.so - -# -# NDR encoding libraries -# -%{_libdir}/libndr-nbt.so.%{libndr_nbt_so_version}* -%{_libdir}/libndr-standard.so.%{libndr_standard_so_version}* -%{_libdir}/libndr-krb5pac.so.%{libndr_krb5pac_so_version}* - ### CLIENT-LIBS %files client-libs %{_libdir}/libdcerpc-binding.so.%{libdcerpc_binding_so_version}* %{_libdir}/libdcerpc-server-core.so.%{libdcerpc_server_core_so_version}* %{_libdir}/libdcerpc.so.%{libdcerpc_so_version}* +%{_libdir}/libndr-krb5pac.so.%{libndr_krb5pac_so_version}* +%{_libdir}/libndr-nbt.so.%{libndr_nbt_so_version}* +%{_libdir}/libndr-standard.so.%{libndr_standard_so_version}* +%{_libdir}/libndr.so.%{libndr_so_version}* %{_libdir}/libsamba-credentials.so.%{libsamba_credentials_so_version}* +%{_libdir}/libsamba-errors.so.%{libsamba_errors_so_version}* %{_libdir}/libsamba-hostconfig.so.%{libsamba_hostconfig_so_version}* %{_libdir}/libsamba-passdb.so.%{libsamba_passdb_so_version}* +%{_libdir}/libsamba-util.so.%{libsamba_util_so_version}* %{_libdir}/libsamdb.so.%{libsamdb_so_version}* %{_libdir}/libsmbconf.so.%{libsmbconf_so_version}* %{_libdir}/libsmbldap.so.%{libsmbldap_so_version}* +%{_libdir}/libtevent-util.so.%{libtevent_util_so_version}* + +%dir %{_libdir}/samba %{_libdir}/samba/libCHARSET3-private-samba.so %{_libdir}/samba/libMESSAGING-SEND-private-samba.so +%{_libdir}/samba/libMESSAGING-private-samba.so %{_libdir}/samba/libaddns-private-samba.so %{_libdir}/samba/libads-private-samba.so %{_libdir}/samba/libasn1util-private-samba.so +%{_libdir}/samba/libauth-private-samba.so %{_libdir}/samba/libauthkrb5-private-samba.so %{_libdir}/samba/libcli-cldap-private-samba.so %{_libdir}/samba/libcli-ldap-common-private-samba.so @@ -2131,12 +1999,20 @@ fi %{_libdir}/samba/libcluster-private-samba.so %{_libdir}/samba/libcmdline-contexts-private-samba.so %{_libdir}/samba/libcommon-auth-private-samba.so +%{_libdir}/samba/libctdb-event-client-private-samba.so +%{_libdir}/samba/libdbwrap-private-samba.so %{_libdir}/samba/libdcerpc-pkt-auth-private-samba.so %{_libdir}/samba/libdcerpc-samba-private-samba.so %{_libdir}/samba/libevents-private-samba.so +%{_libdir}/samba/libflag-mapping-private-samba.so +%{_libdir}/samba/libgenrand-private-samba.so %{_libdir}/samba/libgensec-private-samba.so +%{_libdir}/samba/libgpext-private-samba.so +%{_libdir}/samba/libgpo-private-samba.so %{_libdir}/samba/libgse-private-samba.so %{_libdir}/samba/libhttp-private-samba.so +%{_libdir}/samba/libinterfaces-private-samba.so +%{_libdir}/samba/libiov-buf-private-samba.so %{_libdir}/samba/libkrb5samba-private-samba.so %{_libdir}/samba/libldbsamba-private-samba.so %{_libdir}/samba/liblibcli-lsa3-private-samba.so @@ -2149,36 +2025,41 @@ fi %{_libdir}/samba/libmsrpc3-private-samba.so %{_libdir}/samba/libndr-samba-private-samba.so %{_libdir}/samba/libndr-samba4-private-samba.so +%{_libdir}/samba/libnet-keytab-private-samba.so %{_libdir}/samba/libnetif-private-samba.so -%if 0%{?rhel} -%{_libdir}/samba/libngtcp2-crypto-gnutls-private-samba.so -%{_libdir}/samba/libngtcp2-private-samba.so -%endif %{_libdir}/samba/libnpa-tstream-private-samba.so -%{_libdir}/samba/libquic-private-samba.so +%{_libdir}/samba/libposix-eadb-private-samba.so +%{_libdir}/samba/libprinter-driver-private-samba.so +%{_libdir}/samba/libprinting-migrate-private-samba.so +%{_libdir}/samba/libreplace-private-samba.so %{_libdir}/samba/libregistry-private-samba.so %{_libdir}/samba/libsamba-cluster-support-private-samba.so +%{_libdir}/samba/libsamba-debug-private-samba.so %{_libdir}/samba/libsamba-modules-private-samba.so -%{_libdir}/samba/libsamba-security-trusts-private-samba.so +%{_libdir}/samba/libsamba-security-private-samba.so %{_libdir}/samba/libsamba-sockets-private-samba.so +%{_libdir}/samba/libsamba3-util-private-samba.so %{_libdir}/samba/libsamdb-common-private-samba.so %{_libdir}/samba/libsecrets3-private-samba.so %{_libdir}/samba/libserver-id-db-private-samba.so +%{_libdir}/samba/libserver-role-private-samba.so +%{_libdir}/samba/libsmb-transport-private-samba.so %{_libdir}/samba/libsmbclient-raw-private-samba.so +%{_libdir}/samba/libsmbd-base-private-samba.so %{_libdir}/samba/libsmbd-shim-private-samba.so - -# -# Command line library -# -%{_libdir}/samba/libcmdline-private-samba.so - -# -# Password database modules (depend on libsamba-passdb) -# -%dir %{_libdir}/samba/ldb -%dir %{_libdir}/samba/pdb -%{_libdir}/samba/pdb/smbpasswd.so -%{_libdir}/samba/pdb/tdbsam.so +%{_libdir}/samba/libsmbldaphelper-private-samba.so +%{_libdir}/samba/libstable-sort-private-samba.so +%{_libdir}/samba/libsys-rw-private-samba.so +%{_libdir}/samba/libsocket-blocking-private-samba.so +%{_libdir}/samba/libtalloc-report-printf-private-samba.so +%{_libdir}/samba/libtalloc-report-private-samba.so +%{_libdir}/samba/libtdb-wrap-private-samba.so +%{_libdir}/samba/libtime-basic-private-samba.so +%{_libdir}/samba/libtorture-private-samba.so +%{_libdir}/samba/libutil-crypt-private-samba.so +%{_libdir}/samba/libutil-reg-private-samba.so +%{_libdir}/samba/libutil-setid-private-samba.so +%{_libdir}/samba/libutil-tdb-private-samba.so %if %{without libwbclient} %{_libdir}/samba/libwbclient.so.* @@ -2229,6 +2110,18 @@ fi %{_mandir}/man5/smbpasswd.5* %{_mandir}/man7/samba.7* +### COMMON-LIBS +%files common-libs +# common libraries +%{_libdir}/samba/libcmdline-private-samba.so + +%dir %{_libdir}/samba/ldb + +%dir %{_libdir}/samba/pdb +%{_libdir}/samba/pdb/ldapsam.so +%{_libdir}/samba/pdb/smbpasswd.so +%{_libdir}/samba/pdb/tdbsam.so + ### COMMON-TOOLS %files common-tools %{_bindir}/net @@ -2245,7 +2138,6 @@ fi %{_mandir}/man8/net.8* %{_mandir}/man8/pdbedit.8* %{_mandir}/man8/smbpasswd.8* -%{_datadir}/locale/*/LC_MESSAGES/net.mo ### TOOLS %files tools @@ -2323,7 +2215,6 @@ fi %{_libdir}/samba/ldb/subtree_delete.so %{_libdir}/samba/ldb/subtree_rename.so %{_libdir}/samba/ldb/tombstone_reanimate.so -%{_libdir}/samba/ldb/trust_notify.so %{_libdir}/samba/ldb/unique_object_sids.so %{_libdir}/samba/ldb/update_keytab.so %{_libdir}/samba/ldb/vlv.so @@ -2369,7 +2260,6 @@ fi %{_libdir}/samba/service/dns.so %{_libdir}/samba/service/dns_update.so %{_libdir}/samba/service/drepl.so -%{_libdir}/samba/service/ft_scanner.so %{_libdir}/samba/service/kcc.so %{_libdir}/samba/service/kdc.so %{_libdir}/samba/service/ldap.so @@ -2555,9 +2445,12 @@ fi %endif ### GPUPDATE +%if %{with gpupdate} %files gpupdate %{_mandir}/man8/samba-gpupdate.8* %{_sbindir}/samba-gpupdate +#endif with gpupdate +%endif ### KRB5-PRINTING %files krb5-printing @@ -2585,28 +2478,6 @@ fi %{_libdir}/samba/libRPC-SERVER-LOOP-private-samba.so %{_libdir}/samba/libRPC-WORKER-private-samba.so -# -# Server-side libraries (not used by libsmbclient) -# -%{_libdir}/samba/libauth-private-samba.so -%{_libdir}/samba/libctdb-event-client-private-samba.so -%{_libdir}/samba/libgpext-private-samba.so -%{_libdir}/samba/libgpo-private-samba.so -%{_libdir}/samba/libMESSAGING-private-samba.so -%{_libdir}/samba/libnet-keytab-private-samba.so -%{_libdir}/samba/libposix-eadb-private-samba.so -%{_libdir}/samba/libprinter-driver-private-samba.so -%{_libdir}/samba/libprinting-migrate-private-samba.so -%{_libdir}/samba/libsmbd-base-private-samba.so -%{_libdir}/samba/libsmbldaphelper-private-samba.so -%{_libdir}/samba/libtorture-private-samba.so -%{_libdir}/samba/libutil-crypt-private-samba.so - -# -# Password database modules (server-side, links to libsmbldaphelper) -# -%{_libdir}/samba/pdb/ldapsam.so - ### LIBNETAPI %files -n libnetapi %{_libdir}/libnetapi.so.%{libnetapi_so_version}* @@ -2744,7 +2615,6 @@ fi %{python3_sitearch}/samba/dcerpc/atsvc.*.so %{python3_sitearch}/samba/dcerpc/auth.*.so %{python3_sitearch}/samba/dcerpc/base.*.so -%{python3_sitearch}/samba/dcerpc/bcrypt_rsakey_blob.*.so %{python3_sitearch}/samba/dcerpc/claims.*.so %{python3_sitearch}/samba/dcerpc/conditional_ace.*.so %{python3_sitearch}/samba/dcerpc/dcerpc.*.so @@ -2760,7 +2630,6 @@ fi %{python3_sitearch}/samba/dcerpc/idmap.*.so %{python3_sitearch}/samba/dcerpc/initshutdown.*.so %{python3_sitearch}/samba/dcerpc/irpc.*.so -%{python3_sitearch}/samba/dcerpc/keycredlink.*.so %{python3_sitearch}/samba/dcerpc/krb5ccache.*.so %{python3_sitearch}/samba/dcerpc/krb5pac.*.so %{python3_sitearch}/samba/dcerpc/lsa.*.so @@ -2782,7 +2651,6 @@ fi %{python3_sitearch}/samba/dcerpc/spoolss.*.so %{python3_sitearch}/samba/dcerpc/srvsvc.*.so %{python3_sitearch}/samba/dcerpc/svcctl.*.so -%{python3_sitearch}/samba/dcerpc/tpm20_rsakey_blob.*.so %{python3_sitearch}/samba/dcerpc/unixinfo.*.so %{python3_sitearch}/samba/dcerpc/winbind.*.so %{python3_sitearch}/samba/dcerpc/windows_event_ids.*.so @@ -2795,11 +2663,8 @@ fi %{python3_sitearch}/samba/dnsresolver.py %dir %{python3_sitearch}/samba/domain %{python3_sitearch}/samba/domain/__init__.py -%dir %{python3_sitearch}/samba/domain/__pycache__ %{python3_sitearch}/samba/domain/__pycache__/__init__.*.pyc -%dir %{python3_sitearch}/samba/domain/models %{python3_sitearch}/samba/domain/models/__init__.py -%dir %{python3_sitearch}/samba/domain/models/__pycache__ %{python3_sitearch}/samba/domain/models/__pycache__/__init__.*.pyc %{python3_sitearch}/samba/domain/models/__pycache__/auth_policy.*.pyc %{python3_sitearch}/samba/domain/models/__pycache__/auth_silo.*.pyc @@ -3008,28 +2873,28 @@ fi %dir %{python3_sitearch}/samba/netcmd/domain/auth/__pycache__ %{python3_sitearch}/samba/netcmd/domain/auth/__pycache__/__init__.*.pyc %dir %{python3_sitearch}/samba/netcmd/domain/auth/policy +%{python3_sitearch}/samba/netcmd/domain/auth/policy/computer_allowed_to_authenticate_to.py %{python3_sitearch}/samba/netcmd/domain/auth/policy/__init__.py +%{python3_sitearch}/samba/netcmd/domain/auth/policy/policy.py %dir %{python3_sitearch}/samba/netcmd/domain/auth/policy/__pycache__ -%{python3_sitearch}/samba/netcmd/domain/auth/policy/__pycache__/__init__.*.pyc %{python3_sitearch}/samba/netcmd/domain/auth/policy/__pycache__/computer_allowed_to_authenticate_to.*.pyc +%{python3_sitearch}/samba/netcmd/domain/auth/policy/__pycache__/__init__.*.pyc %{python3_sitearch}/samba/netcmd/domain/auth/policy/__pycache__/policy.*.pyc %{python3_sitearch}/samba/netcmd/domain/auth/policy/__pycache__/service_allowed_to_authenticate_from.*.pyc %{python3_sitearch}/samba/netcmd/domain/auth/policy/__pycache__/service_allowed_to_authenticate_to.*.pyc %{python3_sitearch}/samba/netcmd/domain/auth/policy/__pycache__/user_allowed_to_authenticate_from.*.pyc %{python3_sitearch}/samba/netcmd/domain/auth/policy/__pycache__/user_allowed_to_authenticate_to.*.pyc -%{python3_sitearch}/samba/netcmd/domain/auth/policy/computer_allowed_to_authenticate_to.py -%{python3_sitearch}/samba/netcmd/domain/auth/policy/policy.py %{python3_sitearch}/samba/netcmd/domain/auth/policy/service_allowed_to_authenticate_from.py %{python3_sitearch}/samba/netcmd/domain/auth/policy/service_allowed_to_authenticate_to.py %{python3_sitearch}/samba/netcmd/domain/auth/policy/user_allowed_to_authenticate_from.py %{python3_sitearch}/samba/netcmd/domain/auth/policy/user_allowed_to_authenticate_to.py %dir %{python3_sitearch}/samba/netcmd/domain/auth/silo %{python3_sitearch}/samba/netcmd/domain/auth/silo/__init__.py +%{python3_sitearch}/samba/netcmd/domain/auth/silo/member.py %dir %{python3_sitearch}/samba/netcmd/domain/auth/silo/__pycache__ %{python3_sitearch}/samba/netcmd/domain/auth/silo/__pycache__/__init__.*.pyc %{python3_sitearch}/samba/netcmd/domain/auth/silo/__pycache__/member.*.pyc %{python3_sitearch}/samba/netcmd/domain/auth/silo/__pycache__/silo.*.pyc -%{python3_sitearch}/samba/netcmd/domain/auth/silo/member.py %{python3_sitearch}/samba/netcmd/domain/auth/silo/silo.py %{python3_sitearch}/samba/netcmd/domain/backup.py %dir %{python3_sitearch}/samba/netcmd/domain/claim @@ -3082,7 +2947,6 @@ fi %{python3_sitearch}/samba/netcmd/schema.py %dir %{python3_sitearch}/samba/netcmd/service_account %{python3_sitearch}/samba/netcmd/service_account/__init__.py -%dir %{python3_sitearch}/samba/netcmd/service_account/__pycache__ %{python3_sitearch}/samba/netcmd/service_account/__pycache__/__init__.*.pyc %{python3_sitearch}/samba/netcmd/service_account/__pycache__/group_msa_membership.*.pyc %{python3_sitearch}/samba/netcmd/service_account/__pycache__/service_account.*.pyc @@ -3195,7 +3059,6 @@ fi %if %{with includelibs} %{_libdir}/samba/libpyldb-util.cpython*.so -%{_libdir}/samba/libpytalloc-util.cpython*.so %{python3_sitearch}/__pycache__/_ldb_text*.pyc %{python3_sitearch}/__pycache__/_tdb_text*.pyc @@ -3204,7 +3067,8 @@ fi %{python3_sitearch}/_tdb_text.py %{python3_sitearch}/_tevent.cpython*.so %{python3_sitearch}/ldb.cpython*.so -%{python3_sitearch}/talloc.cpython*.so +#FIXME why is it missing? +#%{python3_sitearch}/talloc.cpython*.so %{python3_sitearch}/tdb.cpython*.so %{python3_sitearch}/tevent.py #endif with includelibs @@ -3286,7 +3150,6 @@ fi %{python3_sitearch}/samba/tests/__pycache__/auth_log_netlogon_bad_creds.*.pyc %{python3_sitearch}/samba/tests/__pycache__/auth_log_samlogon.*.pyc %{python3_sitearch}/samba/tests/__pycache__/auth_log_winbind.*.pyc -%{python3_sitearch}/samba/tests/__pycache__/bcrypt_rsakey_blob.*.pyc %{python3_sitearch}/samba/tests/__pycache__/common.*.pyc %{python3_sitearch}/samba/tests/__pycache__/complex_expressions.*.pyc %{python3_sitearch}/samba/tests/__pycache__/compression.*.pyc @@ -3328,7 +3191,6 @@ fi %{python3_sitearch}/samba/tests/__pycache__/hostconfig.*.pyc %{python3_sitearch}/samba/tests/__pycache__/imports.*.pyc %{python3_sitearch}/samba/tests/__pycache__/join.*.pyc -%{python3_sitearch}/samba/tests/__pycache__/key_credential_link.*.pyc %{python3_sitearch}/samba/tests/__pycache__/krb5_credentials.*.pyc %{python3_sitearch}/samba/tests/__pycache__/ldap_raw.*.pyc %{python3_sitearch}/samba/tests/__pycache__/ldap_referrals.*.pyc @@ -3373,7 +3235,6 @@ fi %{python3_sitearch}/samba/tests/__pycache__/py_credentials.*.pyc %{python3_sitearch}/samba/tests/__pycache__/registry.*.pyc %{python3_sitearch}/samba/tests/__pycache__/reparsepoints.*.pyc -%{python3_sitearch}/samba/tests/__pycache__/rust.*.pyc %{python3_sitearch}/samba/tests/__pycache__/s3idmapdb.*.pyc %{python3_sitearch}/samba/tests/__pycache__/s3param.*.pyc %{python3_sitearch}/samba/tests/__pycache__/s3passdb.*.pyc @@ -3406,7 +3267,6 @@ fi %{python3_sitearch}/samba/tests/__pycache__/subunitrun.*.pyc %{python3_sitearch}/samba/tests/__pycache__/tdb_util.*.pyc %{python3_sitearch}/samba/tests/__pycache__/token_factory.*.pyc -%{python3_sitearch}/samba/tests/__pycache__/tpm20_rsakey_blob.*.pyc %{python3_sitearch}/samba/tests/__pycache__/upgrade.*.pyc %{python3_sitearch}/samba/tests/__pycache__/upgradeprovision.*.pyc %{python3_sitearch}/samba/tests/__pycache__/upgradeprovisionneeddc.*.pyc @@ -3424,7 +3284,6 @@ fi %{python3_sitearch}/samba/tests/auth_log_pass_change.py %{python3_sitearch}/samba/tests/auth_log_samlogon.py %{python3_sitearch}/samba/tests/auth_log_winbind.py -%{python3_sitearch}/samba/tests/bcrypt_rsakey_blob.py %dir %{python3_sitearch}/samba/tests/blackbox %{python3_sitearch}/samba/tests/blackbox/__init__.py %dir %{python3_sitearch}/samba/tests/blackbox/__pycache__ @@ -3493,7 +3352,6 @@ fi %{python3_sitearch}/samba/tests/dcerpc/__pycache__/array.*.pyc %{python3_sitearch}/samba/tests/dcerpc/__pycache__/bare.*.pyc %{python3_sitearch}/samba/tests/dcerpc/__pycache__/binding.*.pyc -%{python3_sitearch}/samba/tests/dcerpc/__pycache__/dfs.*.pyc %{python3_sitearch}/samba/tests/dcerpc/__pycache__/dnsserver.*.pyc %{python3_sitearch}/samba/tests/dcerpc/__pycache__/integer.*.pyc %{python3_sitearch}/samba/tests/dcerpc/__pycache__/lsa.*.pyc @@ -3514,7 +3372,6 @@ fi %{python3_sitearch}/samba/tests/dcerpc/array.py %{python3_sitearch}/samba/tests/dcerpc/bare.py %{python3_sitearch}/samba/tests/dcerpc/binding.py -%{python3_sitearch}/samba/tests/dcerpc/dfs.py %{python3_sitearch}/samba/tests/dcerpc/dnsserver.py %{python3_sitearch}/samba/tests/dcerpc/integer.py %{python3_sitearch}/samba/tests/dcerpc/lsa.py @@ -3587,7 +3444,6 @@ fi %{python3_sitearch}/samba/tests/kcc/graph_utils.py %{python3_sitearch}/samba/tests/kcc/kcc_utils.py %{python3_sitearch}/samba/tests/kcc/ldif_import_export.py -%{python3_sitearch}/samba/tests/key_credential_link.py %dir %{python3_sitearch}/samba/tests/krb5 %dir %{python3_sitearch}/samba/tests/krb5/__pycache__ %{python3_sitearch}/samba/tests/krb5/__pycache__/alias_tests.*.pyc @@ -3612,7 +3468,6 @@ fi %{python3_sitearch}/samba/tests/krb5/__pycache__/kpasswd_tests.*.pyc %{python3_sitearch}/samba/tests/krb5/__pycache__/lockout_tests.*.pyc %{python3_sitearch}/samba/tests/krb5/__pycache__/ms_kile_client_principal_lookup_tests.*.pyc -%{python3_sitearch}/samba/tests/krb5/__pycache__/netlogon.*.pyc %{python3_sitearch}/samba/tests/krb5/__pycache__/nt_hash_tests.*.pyc %{python3_sitearch}/samba/tests/krb5/__pycache__/pac_align_tests.*.pyc %{python3_sitearch}/samba/tests/krb5/__pycache__/pkinit_tests.*.pyc @@ -3655,7 +3510,6 @@ fi %{python3_sitearch}/samba/tests/krb5/kpasswd_tests.py %{python3_sitearch}/samba/tests/krb5/lockout_tests.py %{python3_sitearch}/samba/tests/krb5/ms_kile_client_principal_lookup_tests.py -%{python3_sitearch}/samba/tests/krb5/netlogon.py %{python3_sitearch}/samba/tests/krb5/nt_hash_tests.py %{python3_sitearch}/samba/tests/krb5/pac_align_tests.py %{python3_sitearch}/samba/tests/krb5/pkinit_tests.py @@ -3703,12 +3557,6 @@ fi %{python3_sitearch}/samba/tests/net_join_no_spnego.py %{python3_sitearch}/samba/tests/net_join.py %{python3_sitearch}/samba/tests/netlogonsvc.py -%dir %{python3_sitearch}/samba/tests/nss -%dir %{python3_sitearch}/samba/tests/nss/__pycache__ -%{python3_sitearch}/samba/tests/nss/__pycache__/base.*.pyc -%{python3_sitearch}/samba/tests/nss/__pycache__/group.*.pyc -%{python3_sitearch}/samba/tests/nss/base.py -%{python3_sitearch}/samba/tests/nss/group.py %{python3_sitearch}/samba/tests/ntacls.py %{python3_sitearch}/samba/tests/ntacls_backup.py %{python3_sitearch}/samba/tests/ntlmdisabled.py @@ -3736,7 +3584,6 @@ fi %{python3_sitearch}/samba/tests/py_credentials.py %{python3_sitearch}/samba/tests/registry.py %{python3_sitearch}/samba/tests/reparsepoints.py -%{python3_sitearch}/samba/tests/rust.py %{python3_sitearch}/samba/tests/s3idmapdb.py %{python3_sitearch}/samba/tests/s3param.py %{python3_sitearch}/samba/tests/s3passdb.py @@ -3869,21 +3716,10 @@ fi %{python3_sitearch}/samba/tests/subunitrun.py %{python3_sitearch}/samba/tests/tdb_util.py %{python3_sitearch}/samba/tests/token_factory.py -%{python3_sitearch}/samba/tests/tpm20_rsakey_blob.py %{python3_sitearch}/samba/tests/upgrade.py %{python3_sitearch}/samba/tests/upgradeprovision.py %{python3_sitearch}/samba/tests/upgradeprovisionneeddc.py %{python3_sitearch}/samba/tests/usage.py -%dir %{python3_sitearch}/samba/tests/varlink -%dir %{python3_sitearch}/samba/tests/varlink/__pycache__ -%{python3_sitearch}/samba/tests/varlink/__pycache__/base.*.pyc -%{python3_sitearch}/samba/tests/varlink/__pycache__/getgrouprecord.*.pyc -%{python3_sitearch}/samba/tests/varlink/__pycache__/getmemberships.*.pyc -%{python3_sitearch}/samba/tests/varlink/__pycache__/getuserrecord.*.pyc -%{python3_sitearch}/samba/tests/varlink/base.py -%{python3_sitearch}/samba/tests/varlink/getgrouprecord.py -%{python3_sitearch}/samba/tests/varlink/getmemberships.py -%{python3_sitearch}/samba/tests/varlink/getuserrecord.py %{python3_sitearch}/samba/tests/xattr.py ### TEST @@ -3904,6 +3740,7 @@ fi %if %{with dc} %{_libdir}/samba/libdlz-bind9-for-torture-private-samba.so %endif +%{_libdir}/samba/libdsdb-module-private-samba.so ### USERSHARES %files usershares @@ -3951,7 +3788,6 @@ fi %config(noreplace) %{_sysconfdir}/security/pam_winbind.conf %{_mandir}/man5/pam_winbind.conf.5* %{_mandir}/man8/pam_winbind.8* -%{_datadir}/locale/*/LC_MESSAGES/pam_winbind.mo %if %{with clustering} %files -n ctdb @@ -3964,7 +3800,6 @@ fi %config(noreplace) %{_sysconfdir}/ctdb/ctdb.conf %config(noreplace) %{_sysconfdir}/ctdb/notify.sh %config(noreplace) %{_sysconfdir}/ctdb/debug-hung-script.sh -%config(noreplace) %{_sysconfdir}/ctdb/ctdb-backup-persistent-tdbs.sh %config(noreplace) %{_sysconfdir}/ctdb/ctdb-crash-cleanup.sh %config(noreplace) %{_sysconfdir}/ctdb/debug_locks.sh @@ -4008,8 +3843,8 @@ fi %{_libexecdir}/ctdb/ctdb_natgw %{_libexecdir}/ctdb/ctdb-path %{_libexecdir}/ctdb/ctdb_recovery_helper -%{_libexecdir}/ctdb/ctdb_smnotify_helper %{_libexecdir}/ctdb/ctdb_takeover_helper +%{_libexecdir}/ctdb/smnotify %{_libexecdir}/ctdb/statd_callout %{_libexecdir}/ctdb/statd_callout_helper %{_libexecdir}/ctdb/tdb_mutex_check @@ -4032,8 +3867,6 @@ fi %{_mandir}/man7/ctdb-tunables.7.gz %{_mandir}/man7/ctdb-statistics.7.gz -%ghost %dir /run/ctdb - %{_tmpfilesdir}/ctdb.conf %{_unitdir}/ctdb.service @@ -4060,7 +3893,6 @@ fi %{_datadir}/ctdb/events/legacy/60.nfs.script %{_datadir}/ctdb/events/legacy/70.iscsi.script %{_datadir}/ctdb/events/legacy/91.lvs.script -%{_datadir}/ctdb/events/legacy/95.database.script %dir %{_datadir}/ctdb/scripts %{_datadir}/ctdb/scripts/winbind_ctdb_updatekeytab.sh @@ -4101,15 +3933,7 @@ fi %{_mandir}/man1/winexe.1.gz %endif -%if %{with prometheus} -%files prometheus -%{_bindir}/smb_prometheus_endpoint -%{_mandir}/man8/smb_prometheus_endpoint.8.gz -#endif with prometheus - -%endif %files -n libldb -%license lib/ldb/LICENSE %{_libdir}/libldb.so.* %dir %{_libdir}/samba %{_libdir}/samba/libldb-key-value-private-samba.so diff --git a/smb.conf.example b/smb.conf.example index 271f13b..4e6b5d4 100644 --- a/smb.conf.example +++ b/smb.conf.example @@ -269,13 +269,6 @@ ; map system = no ; store dos attributes = yes -# Turn on SMB 3.1.1 Unix Extensions by default -# -# Note: The Linux Kernel SMB3 client will negotiate unix extensions by default, -# find more info in man mount.smb3(8). Linux 6.13 will finally support special -# filetypes and symlink handling. - - smb3 unix extensions = yes #============================ Share Definitions ============================== diff --git a/smb.conf.vendor b/smb.conf.vendor index f237c86..e45384d 100644 --- a/smb.conf.vendor +++ b/smb.conf.vendor @@ -38,8 +38,7 @@ [print$] comment = Printer Drivers path = /var/lib/samba/drivers - # printadmin is a local group - write list = printadmin root - force group = printadmin + write list = @printadmin root + force group = @printadmin create mask = 0664 directory mask = 0775 diff --git a/sources b/sources index 01648ec..be4ad7c 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (samba-4.23.4.tar.xz) = 58979aa8a83e8210918f4f1adbcadff329e57a9cd25d7aba98d18f54a2e790a7ef3cc6b9fb3303d492d33d67f4a135849a419c95644d14e53a39654736d486ac -SHA512 (samba-4.23.4.tar.asc) = 0981ce6a43202953cdc7ceae77fa0e3b4ab853991430dde4df6daa163984de6c7ca3f3a3037376659d3bdaedcc108cdd7a77ce0ac24d0a1add56c7103fca7dce +SHA512 (samba-4.21.9.tar.xz) = 64c9b2b4eb2f1bd9ac2578d2a5e858565a25b8b2bbde1f12a698fb675da8e0a311119eadbcd1be7f063bf985110bfc4fd35f1408a7e4095fa004cda81aa3d26c +SHA512 (samba-4.21.9.tar.asc) = e395b02bcf979813329add3e2c7ffcf91f121670a5101d9e07af312bbf6b4ac2edac86c25050effca733113d35aa441200a90164d9ddf1313e2ec2e28065c725 diff --git a/tests/deps-check.fmf b/tests/deps-check.fmf deleted file mode 100644 index c1452d0..0000000 --- a/tests/deps-check.fmf +++ /dev/null @@ -1,22 +0,0 @@ -summary: Check samba package dependency structure -description: | - Verify that samba library packages maintain correct dependency hierarchy: - - samba-core-libs has no samba-*-libs dependencies - - samba-ndr-libs depends on samba-core-libs (not samba-client-libs or samba-libs) - - samba-client-libs depends on core-libs + ndr-libs (not samba-libs) - - samba-client depends on samba-client-libs (not samba-libs) - - samba-libs does not depend on samba-dc-libs - - libsmbclient depends on samba-client-libs (not samba-libs) - - libwbclient has no samba-*-libs dependencies - - libldb has no samba-*-libs dependencies -test: ./deps-check.sh -framework: shell -require: - - samba-core-libs - - samba-ndr-libs - - samba-client-libs - - samba-libs - - samba-client - - libwbclient - - libsmbclient - - libldb diff --git a/tests/deps-check.sh b/tests/deps-check.sh deleted file mode 100755 index ce49074..0000000 --- a/tests/deps-check.sh +++ /dev/null @@ -1,167 +0,0 @@ -#!/bin/bash -# -# Samba package dependency structure verification -# -# This test ensures that the samba library package dependencies don't regress. -# The expected hierarchy is: -# -# samba-core-libs (no samba-*-libs dependencies) -# ^ -# | -# samba-ndr-libs (depends on samba-core-libs only) -# ^ -# | -# samba-client-libs (depends on samba-core-libs + samba-ndr-libs) -# -# libwbclient (no samba-*-libs dependencies - only links to libc) -# -# samba-client (depends on samba-client-libs, NOT samba-libs) -# libsmbclient (depends on samba-client-libs, NOT samba-libs) -# -# NOTE: This test checks RESOLVED dependencies, not just explicit Requires. -# A library requirement like 'libfoo.so' is resolved to the package that -# provides it, ensuring we catch indirect dependencies. -# - -set -e - -ERRORS=0 - -# Get all packages that a package depends on (resolved) -# This resolves library deps like 'libfoo.so' to actual package names -get_resolved_deps() { - local pkg="$1" - - rpm --query --requires "$pkg" 2>/dev/null | while read -r req; do - # Skip rpmlib and config requirements - [[ "$req" =~ ^rpmlib ]] && continue - [[ "$req" =~ ^config ]] && continue - [[ "$req" =~ ^/ ]] && continue - - # Get the package that provides this requirement - provider=$(rpm --query --whatprovides "$req" 2>/dev/null | head -1) - if [ -n "$provider" ] && [ "$provider" != "no package provides $req" ]; then - # Extract just the package name (remove version-release.arch) - echo "${provider%%-[0-9]*}" - fi - done | sort -u -} - -# Check that a package does NOT depend on packages matching a pattern -# This checks RESOLVED dependencies (what packages actually get pulled in) -check_no_resolved_dep() { - local pkg="$1" - local pattern="$2" - local description="$3" - - if ! rpm --query "$pkg" &>/dev/null; then - echo "SKIP: $pkg not installed" - return 0 - fi - - local bad_deps - # Exclude the package itself from the check - bad_deps=$(get_resolved_deps "$pkg" | grep -v "^${pkg}$" | grep -E "$pattern" || true) - - if [ -n "$bad_deps" ]; then - echo "FAIL: $pkg depends on $description" - echo " Found: $bad_deps" - ERRORS=$((ERRORS + 1)) - return 1 - fi - echo "PASS: $pkg does not depend on $description" - return 0 -} - -# Check that a package DOES depend on a specific package -check_has_resolved_dep() { - local pkg="$1" - local expected="$2" - - if ! rpm --query "$pkg" &>/dev/null; then - echo "SKIP: $pkg not installed" - return 0 - fi - - if get_resolved_deps "$pkg" | grep -qF "$expected"; then - echo "PASS: $pkg depends on $expected" - return 0 - fi - echo "FAIL: $pkg does not depend on $expected" - ERRORS=$((ERRORS + 1)) - return 1 -} - -echo "=== Samba Package Dependency Checks ===" -echo "" -echo "Checking resolved dependencies (library deps resolved to packages)" -echo "" - -# 1. samba-core-libs must NOT depend on any samba-*-libs packages -echo "--- samba-core-libs ---" -check_no_resolved_dep samba-core-libs "^samba-.*-libs$" "any samba*-libs package" - -echo "" - -# 2. samba-ndr-libs must depend on samba-core-libs -# but NOT samba-client-libs or samba-libs -echo "--- samba-ndr-libs ---" -check_has_resolved_dep samba-ndr-libs "samba-core-libs" -check_no_resolved_dep samba-ndr-libs "^samba-client-libs$" "samba-client-libs" -check_no_resolved_dep samba-ndr-libs "^samba-libs$" "samba-libs" - -echo "" - -# 3. samba-client-libs must depend on samba-core-libs and samba-ndr-libs -# but NOT samba-libs -echo "--- samba-client-libs ---" -check_has_resolved_dep samba-client-libs "samba-core-libs" -check_has_resolved_dep samba-client-libs "samba-ndr-libs" -check_no_resolved_dep samba-client-libs "^samba-libs$" "samba-libs" - -echo "" - -# 4. libwbclient must NOT depend on any samba-*-libs packages -echo "--- libwbclient ---" -check_no_resolved_dep libwbclient "^samba-.*-libs$" "any samba*-libs package" - -echo "" - -# 5. samba-client must depend on samba-client-libs but NOT samba-libs -# (client tools should not pull in server libraries) -echo "--- samba-client ---" -check_has_resolved_dep samba-client "samba-client-libs" -check_no_resolved_dep samba-client "^samba-libs$" "samba-libs" - -echo "" - -# 6. libsmbclient must depend on samba-client-libs but NOT samba-libs -# (SMB client library should not pull in server libraries) -echo "--- libsmbclient ---" -check_has_resolved_dep libsmbclient "samba-client-libs" -check_no_resolved_dep libsmbclient "^samba-libs$" "samba-libs" - -echo "" - -# 7. libldb must NOT depend on any samba-*-libs packages -# (libldb is a standalone database library) -echo "--- libldb ---" -check_no_resolved_dep libldb "^samba-.*-libs$" "any samba*-libs package" - -echo "" - -# 8. samba-libs must NOT depend on samba-dc-libs -# (server libraries should not pull in DC-specific libraries) -echo "--- samba-libs ---" -check_no_resolved_dep samba-libs "^samba-dc-libs$" "samba-dc-libs" - -echo "" -echo "=== Summary ===" - -if [ $ERRORS -gt 0 ]; then - echo "FAILED: $ERRORS dependency check(s) failed" - exit 1 -fi - -echo "All dependency checks passed" -exit 0