net-fs/samba: Sync with Gentoo

It's from Gentoo commit e765b057da5456405169957c372542e2af30b2f5.

Signed-off-by: Flatcar Buildbot <buildbot@flatcar-linux.org>
This commit is contained in:
Flatcar Buildbot 2026-03-02 07:28:22 +00:00 committed by Krzesimir Nowak
parent eec511f044
commit 909cad3f8a
14 changed files with 54 additions and 2973 deletions

View File

@ -1,12 +1,6 @@
DIST samba-4.20.8.tar.gz 42531989 BLAKE2B 4c8d6d4fe40c0640667089179af5a8a49e6117fcd46b735ac59ffad0334e7fddffb99d2204c30d272a1902b8bf22bc9dc10a7b58762642977f0aec25acb91a57 SHA512 1dc598cb3aa830d35985e5840f1956d48b93eef02805248ececd0eb472b514311a9f6e69798bb5f5735a845b6e1c8de84b4ecaff6dea7a61324202d6fb0b3eeb
DIST samba-4.21.10.tar.gz 42700998 BLAKE2B 44029738256a44a9e4b86cf4dc198e3b0145d382005a444e32522138fe1127018c2cbb3b2f4bbd43e7c27911b09cf435fdd213a69404a98a80745b3090262f1f SHA512 2911620ff6ff09ae3b85e277bc1e1b783ccfe4f0bfd5a31f4df31e546a1eee698923fae1daa112e0c41f37d47a452f4306893883438b26e95e0fc7f5d1f67341
DIST samba-4.21.7.tar.gz 42689509 BLAKE2B c7cfdab05402f0df38c1a643126072fdaf4d031e339e171180009ecaf9de7d06c490f344b2eea6ccec1021ecbf84aabe5c0d9b2718ab461f95502ce52dd1ffbc SHA512 f44a0dc880b2a5694f9c46ff11c808ae263f68c91cc9b0e32869bb44f84c1fdcc49370a396f38e0f452133c29357d8ad80a689af67bd85f648b2121e7792b555
DIST samba-4.21.8.tar.gz 42696867 BLAKE2B b86d9a5f2ae072b50555757d97241ff48d2a1155323da43c70a6f809a1fb2e303077d414b6614ca1740e06b4f613d1754860eeed043d65afc77cf1ecf2fc823f SHA512 194d89f2df2513b9e7e84b2b2554c8f553f6115ba98d3b3dee3efced33cbce74c9b4fac119625a4b772a516ab3fcb21595e1bd2e6f9bf3d162b25f6bb25b6dce
DIST samba-4.21.9.tar.gz 42695134 BLAKE2B 21132a5fb75d42772f7c6ba414f7bb7b862e43d10b84a97155b1f2aeb40d4841d36697e9a6a795eed2a38a7076933b0b2cd731ea679f0dc820137b897be9e835 SHA512 465ccb912c443e3b187d9662f605141011626b12ebc979558e3c710487382cae8fe110e0bc5232f04c839cb5d13313f8f68f2edd2511ead31cefb9096ecdcf08
DIST samba-4.22.3.tar.gz 42869744 BLAKE2B 9ad02f617df307d6a7e0f88d030a4e3884d221ad2862f42af0cf8fb7cc595578fea9ce210b4bad2521634bd3b9752a58a077905f82ce5e9ef4eb8331a8044efc SHA512 5fe79857c9c21d13912bd4f937ec00ad885d4b53d814265428916578927615f3d4a2fe921df88960e6651cd78b202734fee58ff38f6fb7fbffdfe8f129bcf59a
DIST samba-4.22.4.tar.gz 42873748 BLAKE2B c2d239f2d62f450fbef84ceee1077201c0fca926cc97e99527d4bff07ff11a815a4167ca270afd04af4257759bcc1e003493bfcfd9e552e9410d426921341c8c SHA512 4a4ef586bc6d8fa5984d87814022a35988afaf4ee0aebaf023c4a1debfec4215525e886efe2efd4647a4374855d8cd15c6fc919de84454847206d558fcd21ea2
DIST samba-4.22.5.tar.gz 42876122 BLAKE2B c6ee4c98c4aced9faa0b5f90c61a3ea9473fc8c90e7c3ceb470aba9354fb4bb21cdd16a7d19bb6b0faee4454259e02546b4bb5093e8e8fe64a67b5635fc1152b SHA512 ee183e664768076f814c252afef0cd2225961d173174e8f4703d8cf59fe2abc2d1a089e293905849201ab2af75e27d8666360072a85bcce2b0dc735324d6b02e
DIST samba-4.22.6.tar.gz 42883971 BLAKE2B 2231ef23c54ce6e96dcc1e7c6eb096cf291a780900de1e30bd37812258e2c8e44c85d6c665c975a0cba53ac3af2f5bb6e63b2e8a9da994000ea3ae2704596d03 SHA512 ab307c3aff3a76a8a561b8d418ad69e51866238ea5f5bdef6b1621ccadf43d17ec9d5475d033ac93d9b97e623affdcd0ed3fb1b616afc8ff02521cc310968c61
DIST samba-4.23.0.tar.gz 43320412 BLAKE2B e4787045dd85dce9e03b18d04d09ed1c3adae01f13545e99c2d84af8855f42f716bb256d8eee2830164f2fd59c7386f1547f4ec45504edc3c80470b27fe05ab4 SHA512 b95504c28b7773db792f9bc895644efc8027ec7724beca6435f2ba5a862eda3023551528275ec23aae9ad580d42350015d8851757b9ea54d099321fe8a31fe8c
DIST samba-4.23.2.tar.gz 43324641 BLAKE2B 6ea7254f07121e32c6ac0914f45451c0174d68006dbc7836469a9d201d5acadbf6d8ed79d962ba7faa4cd404f52b5c27c02b7025feb37e4a56162bcd0a863401 SHA512 115022f736a36a902e939babd9cf62d71a60363ac0f8bc06f2fe07716f2c99cf44cba2513107edae6e673dbd6af7ea69757fe27fe74954bfb8c6904a92c93d80
DIST samba-4.23.3.tar.gz 43328964 BLAKE2B 3d242217f5fec94dd680bc6f3aa932ea8273bff5333f53e5009351a7fcb8e3d11524f53aad1fe7d9dfd04c8bd6fbadb458953e59fab77e5ce19dc7c7c56c0847 SHA512 5c6662b3788cc9cc4d05037484a2dc0ea185098062f63339bfab47852a38afb1d5431cea61cc9d94ba23fa340439f3deabacd42b6bab4e4fbc11cc543f6d79da
DIST samba-4.22.8.tar.gz 42868679 BLAKE2B 24c285d0b41a37c03338332d85493300641b89dd8e159873bb97b858c24d00ce56c756557c54b3a25e701dfc286f55fd6ca9d0ba97a50083147c00d946d80582 SHA512 35f7aa28c24647250c1d1a8df8bbaab16422fd6372d4f90e3d2682b801911d9c833e72ac71b61e96166dd2b86b16dbeddacfd273f4846a56196ce022cd58055e
DIST samba-4.23.5.tar.gz 43298892 BLAKE2B cab8a569da87d32b0268ea2111327450b64fa863507a286d46e200c21c947c477807f181651fa32bf81b799f1ae7554f417300abc8442fbe274208becb7432c9 SHA512 5bf5733dddde9dbd8f5680b53fb927a6802572d1f4758d1d58e00e58fdadc19bec1ef2b195bcdc065c7bed05c3d4aade5ffe9af9227051cf9ea91a9428a3693c
DIST samba-4.23.6.tar.gz 43306831 BLAKE2B c5c567bfc4734429790ec7362150eda231ce7e3e7dbdfaa2ca2dc81bd178c9c15cc9360b21f4c5dd1f1423d46337bc5a7b581efcff8ed647adb69a9b47922320 SHA512 61dc2a80f1ea5a7a04bc45ba7896107fd1c619ec3f841f9f6adb9c166a3ce3a5cee7b0d097cfa2c768ba65e35167c0739099cc76a5478c0d6f41521a621336c9
DIST samba-4.24.0rc1.tar.gz 43381208 BLAKE2B 788d148b1cdd1d573878d9bb8023efa385ba04f105796849cea96eff669978526505364fd409d6714c20f39053d1b2ef9e02f974cda261697cbe837defe39fb4 SHA512 0e53e392e324f7044c4a2eb54f57062288d81916249488b871dcd631cd2d67786a39e68982f2751a3f4fe81622ce8f411ac2c60a7b760d75004379208a1284eb
DIST samba-4.24.0rc3.tar.gz 43387471 BLAKE2B 6e51d5d688e6da7c4a03eb9393dfda6df16fa05dd53dceac29da9a01de9791219625592872a4ba46f68173f73da65c3df470646d34c3b310897cb393e5fd630f SHA512 f76493f8e665ad75425554a812ef6cea815a3babddb5bb91b645bdac69d851a7cb13c623298839849d459627ebc4696c0ae4b6dbb0bc3df5bd9731a66d8e915b

View File

@ -1,532 +0,0 @@
From 9fd05848d4a59db3977ae74f1a7a89f63f22b9ca Mon Sep 17 00:00:00 2001
From: Stefan Metzmacher <metze@samba.org>
Date: Fri, 11 Oct 2024 13:32:22 +0000
Subject: [PATCH 1/3] s3:libsmb: let discover_dc_netbios() return
DOMAIN_CONTROLLER_NOT_FOUND
We may get NT_STATUS_NOT_FOUND when the name can't be resolved
and NT_STATUS_INVALID_ADDRESS if the system doesn't have ipv4
addresses...
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
(cherry picked from commit e47ce1d10b13d8ef165c70984e6e490f4c2a64c2)
---
source3/libsmb/dsgetdcname.c | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/source3/libsmb/dsgetdcname.c b/source3/libsmb/dsgetdcname.c
index 654893c172c..00e1fac6b93 100644
--- a/source3/libsmb/dsgetdcname.c
+++ b/source3/libsmb/dsgetdcname.c
@@ -483,7 +483,19 @@ static NTSTATUS discover_dc_netbios(TALLOC_CTX *mem_ctx,
&count,
resolve_order);
if (!NT_STATUS_IS_OK(status)) {
- DEBUG(10,("discover_dc_netbios: failed to find DC\n"));
+ NTSTATUS raw_status = status;
+
+ if (NT_STATUS_EQUAL(status, NT_STATUS_NOT_FOUND)) {
+ status = NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND;
+ }
+ if (NT_STATUS_EQUAL(status, NT_STATUS_INVALID_ADDRESS)) {
+ status = NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND;
+ }
+
+ DBG_DEBUG("failed to find DC for %s: %s => %s\n",
+ domain_name,
+ nt_errstr(raw_status),
+ nt_errstr(status));
return status;
}
--
2.47.2
From 4108b021383ccad766a571c93bd6d5fafc4e7b80 Mon Sep 17 00:00:00 2001
From: Stefan Metzmacher <metze@samba.org>
Date: Fri, 9 May 2025 09:38:41 +0200
Subject: [PATCH 2/3] s3:winbindd: avoid using any netlogon call to get a dc
name
BUG: https://bugzilla.samba.org/show_bug.cgi?id=15876
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Guenther Deschner <gd@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
(backported from commit f86a4bf6848ade2db7229d182576db3320c3ece7)
---
source3/winbindd/winbindd_cm.c | 145 ---------------------------
source3/winbindd/winbindd_dual_srv.c | 105 +------------------
2 files changed, 5 insertions(+), 245 deletions(-)
diff --git a/source3/winbindd/winbindd_cm.c b/source3/winbindd/winbindd_cm.c
index 1685edbabaa..28ebc15ddf9 100644
--- a/source3/winbindd/winbindd_cm.c
+++ b/source3/winbindd/winbindd_cm.c
@@ -475,135 +475,6 @@ static bool cm_is_ipc_credentials(struct cli_credentials *creds)
return ret;
}
-static bool get_dc_name_via_netlogon(struct winbindd_domain *domain,
- fstring dcname,
- struct sockaddr_storage *dc_ss,
- uint32_t request_flags)
-{
- struct winbindd_domain *our_domain = NULL;
- struct rpc_pipe_client *netlogon_pipe = NULL;
- NTSTATUS result;
- WERROR werr;
- TALLOC_CTX *mem_ctx;
- unsigned int orig_timeout;
- const char *tmp = NULL;
- const char *p;
- struct dcerpc_binding_handle *b;
-
- /* Hmmmm. We can only open one connection to the NETLOGON pipe at the
- * moment.... */
-
- if (IS_DC) {
- return False;
- }
-
- if (domain->primary) {
- return False;
- }
-
- our_domain = find_our_domain();
-
- if ((mem_ctx = talloc_init("get_dc_name_via_netlogon")) == NULL) {
- return False;
- }
-
- result = cm_connect_netlogon(our_domain, &netlogon_pipe);
- if (!NT_STATUS_IS_OK(result)) {
- talloc_destroy(mem_ctx);
- return False;
- }
-
- b = netlogon_pipe->binding_handle;
-
- /* This call can take a long time - allow the server to time out.
- 35 seconds should do it. */
-
- orig_timeout = rpccli_set_timeout(netlogon_pipe, 35000);
-
- if (our_domain->active_directory) {
- struct netr_DsRGetDCNameInfo *domain_info = NULL;
-
- /*
- * TODO request flags are not respected in the server
- * (and in some cases, like REQUIRE_PDC, causes an error)
- */
- result = dcerpc_netr_DsRGetDCName(b,
- mem_ctx,
- our_domain->dcname,
- domain->name,
- NULL,
- NULL,
- request_flags|DS_RETURN_DNS_NAME,
- &domain_info,
- &werr);
- if (NT_STATUS_IS_OK(result) && W_ERROR_IS_OK(werr)) {
- tmp = talloc_strdup(
- mem_ctx, domain_info->dc_unc);
- if (tmp == NULL) {
- DEBUG(0, ("talloc_strdup failed\n"));
- talloc_destroy(mem_ctx);
- return false;
- }
- if (domain->alt_name == NULL) {
- domain->alt_name = talloc_strdup(domain,
- domain_info->domain_name);
- if (domain->alt_name == NULL) {
- DEBUG(0, ("talloc_strdup failed\n"));
- talloc_destroy(mem_ctx);
- return false;
- }
- }
- if (domain->forest_name == NULL) {
- domain->forest_name = talloc_strdup(domain,
- domain_info->forest_name);
- if (domain->forest_name == NULL) {
- DEBUG(0, ("talloc_strdup failed\n"));
- talloc_destroy(mem_ctx);
- return false;
- }
- }
- }
- } else {
- result = dcerpc_netr_GetAnyDCName(b, mem_ctx,
- our_domain->dcname,
- domain->name,
- &tmp,
- &werr);
- }
-
- /* And restore our original timeout. */
- rpccli_set_timeout(netlogon_pipe, orig_timeout);
-
- if (!NT_STATUS_IS_OK(result)) {
- DEBUG(10,("dcerpc_netr_GetAnyDCName failed: %s\n",
- nt_errstr(result)));
- talloc_destroy(mem_ctx);
- return false;
- }
-
- if (!W_ERROR_IS_OK(werr)) {
- DEBUG(10,("dcerpc_netr_GetAnyDCName failed: %s\n",
- win_errstr(werr)));
- talloc_destroy(mem_ctx);
- return false;
- }
-
- /* dcerpc_netr_GetAnyDCName gives us a name with \\ */
- p = strip_hostname(tmp);
-
- fstrcpy(dcname, p);
-
- talloc_destroy(mem_ctx);
-
- DEBUG(10,("dcerpc_netr_GetAnyDCName returned %s\n", dcname));
-
- if (!resolve_name(dcname, dc_ss, 0x20, true)) {
- return False;
- }
-
- return True;
-}
-
/**
* Helper function to assemble trust password and account name
*/
@@ -1283,24 +1154,8 @@ static bool get_dcs(TALLOC_CTX *mem_ctx, struct winbindd_domain *domain,
struct samba_sockaddr *sa_list = NULL;
size_t salist_size = 0;
size_t i;
- bool is_our_domain;
enum security_types sec = (enum security_types)lp_security();
- is_our_domain = strequal(domain->name, lp_workgroup());
-
- /* If not our domain, get the preferred DC, by asking our primary DC */
- if ( !is_our_domain
- && get_dc_name_via_netlogon(domain, dcname, &ss, request_flags)
- && add_one_dc_unique(mem_ctx, domain->name, dcname, &ss, dcs,
- num_dcs) )
- {
- char addr[INET6_ADDRSTRLEN];
- print_sockaddr(addr, sizeof(addr), &ss);
- DEBUG(10, ("Retrieved DC %s at %s via netlogon\n",
- dcname, addr));
- return True;
- }
-
if ((sec == SEC_ADS) && (domain->alt_name != NULL)) {
char *sitename = NULL;
diff --git a/source3/winbindd/winbindd_dual_srv.c b/source3/winbindd/winbindd_dual_srv.c
index bbdaf6e5807..0d9d88733da 100644
--- a/source3/winbindd/winbindd_dual_srv.c
+++ b/source3/winbindd/winbindd_dual_srv.c
@@ -662,106 +662,11 @@ NTSTATUS _wbint_QueryUserRidList(struct pipes_struct *p,
NTSTATUS _wbint_DsGetDcName(struct pipes_struct *p, struct wbint_DsGetDcName *r)
{
- struct winbindd_domain *domain = wb_child_domain();
- struct rpc_pipe_client *netlogon_pipe;
- struct netr_DsRGetDCNameInfo *dc_info;
- NTSTATUS status;
- WERROR werr;
- unsigned int orig_timeout;
- struct dcerpc_binding_handle *b;
- bool retry = false;
- bool try_dsrgetdcname = false;
-
- if (domain == NULL) {
- return dsgetdcname(p->mem_ctx, global_messaging_context(),
- r->in.domain_name, r->in.domain_guid,
- r->in.site_name ? r->in.site_name : "",
- r->in.flags,
- r->out.dc_info);
- }
-
- if (domain->active_directory) {
- try_dsrgetdcname = true;
- }
-
-reconnect:
- status = cm_connect_netlogon(domain, &netlogon_pipe);
-
- reset_cm_connection_on_error(domain, NULL, status);
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(10, ("Can't contact the NETLOGON pipe\n"));
- return status;
- }
-
- b = netlogon_pipe->binding_handle;
-
- /* This call can take a long time - allow the server to time out.
- 35 seconds should do it. */
-
- orig_timeout = rpccli_set_timeout(netlogon_pipe, 35000);
-
- if (try_dsrgetdcname) {
- status = dcerpc_netr_DsRGetDCName(b,
- p->mem_ctx, domain->dcname,
- r->in.domain_name, NULL, r->in.domain_guid,
- r->in.flags, r->out.dc_info, &werr);
- if (NT_STATUS_IS_OK(status) && W_ERROR_IS_OK(werr)) {
- goto done;
- }
- if (!retry &&
- reset_cm_connection_on_error(domain, NULL, status))
- {
- retry = true;
- goto reconnect;
- }
- try_dsrgetdcname = false;
- retry = false;
- }
-
- /*
- * Fallback to less capable methods
- */
-
- dc_info = talloc_zero(r->out.dc_info, struct netr_DsRGetDCNameInfo);
- if (dc_info == NULL) {
- status = NT_STATUS_NO_MEMORY;
- goto done;
- }
-
- if (r->in.flags & DS_PDC_REQUIRED) {
- status = dcerpc_netr_GetDcName(b,
- p->mem_ctx, domain->dcname,
- r->in.domain_name, &dc_info->dc_unc, &werr);
- } else {
- status = dcerpc_netr_GetAnyDCName(b,
- p->mem_ctx, domain->dcname,
- r->in.domain_name, &dc_info->dc_unc, &werr);
- }
-
- if (!retry && reset_cm_connection_on_error(domain, b, status)) {
- retry = true;
- goto reconnect;
- }
- if (!NT_STATUS_IS_OK(status)) {
- DEBUG(10, ("dcerpc_netr_Get[Any]DCName failed: %s\n",
- nt_errstr(status)));
- goto done;
- }
- if (!W_ERROR_IS_OK(werr)) {
- DEBUG(10, ("dcerpc_netr_Get[Any]DCName failed: %s\n",
- win_errstr(werr)));
- status = werror_to_ntstatus(werr);
- goto done;
- }
-
- *r->out.dc_info = dc_info;
- status = NT_STATUS_OK;
-
-done:
- /* And restore our original timeout. */
- rpccli_set_timeout(netlogon_pipe, orig_timeout);
-
- return status;
+ return dsgetdcname(p->mem_ctx, global_messaging_context(),
+ r->in.domain_name, r->in.domain_guid,
+ r->in.site_name ? r->in.site_name : "",
+ r->in.flags,
+ r->out.dc_info);
}
NTSTATUS _wbint_LookupRids(struct pipes_struct *p, struct wbint_LookupRids *r)
--
2.47.2
From 41191db034ea7825acd01a0166cd2a8b425878ed Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?G=C3=BCnther=20Deschner?= <gd@samba.org>
Date: Wed, 2 Jul 2025 21:59:48 +0200
Subject: [PATCH 3/3] s3-winbindd: Fix internal winbind dsgetdcname calls
w.r.t. domain name
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
when winbind calls to dsgetdcname internally, make sure to
prefer the DNS domain name if we have it. Makes DNS lookups much more
likely to succeed.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=15876
Guenther
Signed-off-by: Guenther Deschner <gd@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
Autobuild-User(master): Ralph Böhme <slow@samba.org>
Autobuild-Date(master): Mon Jul 7 10:44:37 UTC 2025 on atb-devel-224
(cherry picked from commit 2560c9b3224816ffd371a62103f65b3aca301ad5)
---
source3/winbindd/wb_queryuser.c | 17 +++++++++++++----
source3/winbindd/wb_sids2xids.c | 17 +++++++++++++----
source3/winbindd/wb_xids2sids.c | 12 +++++++++---
source3/winbindd/winbindd_dual.c | 6 +++++-
source3/winbindd/winbindd_proto.h | 1 +
source3/winbindd/winbindd_util.c | 19 +++++++++++++++++++
6 files changed, 60 insertions(+), 12 deletions(-)
diff --git a/source3/winbindd/wb_queryuser.c b/source3/winbindd/wb_queryuser.c
index c2758f1b76a..db8e946ba71 100644
--- a/source3/winbindd/wb_queryuser.c
+++ b/source3/winbindd/wb_queryuser.c
@@ -289,10 +289,19 @@ static void wb_queryuser_done(struct tevent_req *subreq)
if (NT_STATUS_EQUAL(result, NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND) &&
!state->tried_dclookup) {
- D_DEBUG("GetNssInfo got DOMAIN_CONTROLLER_NOT_FOUND, calling wb_dsgetdcname_send()\n");
- subreq = wb_dsgetdcname_send(
- state, state->ev, state->info->domain_name, NULL, NULL,
- DS_RETURN_DNS_NAME);
+ const char *domain_name = find_dns_domain_name(
+ state->info->domain_name);
+
+ D_DEBUG("GetNssInfo got DOMAIN_CONTROLLER_NOT_FOUND, calling "
+ "wb_dsgetdcname_send(%s)\n",
+ domain_name);
+
+ subreq = wb_dsgetdcname_send(state,
+ state->ev,
+ domain_name,
+ NULL,
+ NULL,
+ DS_RETURN_DNS_NAME);
if (tevent_req_nomem(subreq, req)) {
return;
}
diff --git a/source3/winbindd/wb_sids2xids.c b/source3/winbindd/wb_sids2xids.c
index f0f6c23fc20..03e5e7e0258 100644
--- a/source3/winbindd/wb_sids2xids.c
+++ b/source3/winbindd/wb_sids2xids.c
@@ -612,13 +612,22 @@ static void wb_sids2xids_done(struct tevent_req *subreq)
!state->tried_dclookup) {
struct lsa_DomainInfo *d;
+ const char *domain_name = NULL;
- D_DEBUG("Domain controller not found. Calling wb_dsgetdcname_send() to get it.\n");
d = &state->idmap_doms.domains[state->dom_index];
- subreq = wb_dsgetdcname_send(
- state, state->ev, d->name.string, NULL, NULL,
- DS_RETURN_DNS_NAME);
+ domain_name = find_dns_domain_name(d->name.string);
+
+ D_DEBUG("Domain controller not found. Calling "
+ "wb_dsgetdcname_send(%s) to get it.\n",
+ domain_name);
+
+ subreq = wb_dsgetdcname_send(state,
+ state->ev,
+ domain_name,
+ NULL,
+ NULL,
+ DS_RETURN_DNS_NAME);
if (tevent_req_nomem(subreq, req)) {
return;
}
diff --git a/source3/winbindd/wb_xids2sids.c b/source3/winbindd/wb_xids2sids.c
index 86bd7f9deab..6fcf524d94f 100644
--- a/source3/winbindd/wb_xids2sids.c
+++ b/source3/winbindd/wb_xids2sids.c
@@ -143,9 +143,15 @@ static void wb_xids2sids_dom_done(struct tevent_req *subreq)
if (NT_STATUS_EQUAL(result, NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND) &&
!state->tried_dclookup) {
- subreq = wb_dsgetdcname_send(
- state, state->ev, state->dom_map->name, NULL, NULL,
- DS_RETURN_DNS_NAME);
+ const char *domain_name = find_dns_domain_name(
+ state->dom_map->name);
+
+ subreq = wb_dsgetdcname_send(state,
+ state->ev,
+ domain_name,
+ NULL,
+ NULL,
+ DS_RETURN_DNS_NAME);
if (tevent_req_nomem(subreq, req)) {
return;
}
diff --git a/source3/winbindd/winbindd_dual.c b/source3/winbindd/winbindd_dual.c
index b8e1ceddecc..ee80a4725fa 100644
--- a/source3/winbindd/winbindd_dual.c
+++ b/source3/winbindd/winbindd_dual.c
@@ -532,6 +532,7 @@ static void wb_domain_request_trigger(struct tevent_req *req,
struct wb_domain_request_state *state = tevent_req_data(
req, struct wb_domain_request_state);
struct winbindd_domain *domain = state->domain;
+ const char *domain_name = NULL;
struct tevent_req *subreq = NULL;
size_t shortest_queue_length;
@@ -604,8 +605,11 @@ static void wb_domain_request_trigger(struct tevent_req *req,
* which is indicated by DS_RETURN_DNS_NAME.
* For NT4 domains we still get the netbios name.
*/
+
+ domain_name = find_dns_domain_name(state->domain->name);
+
subreq = wb_dsgetdcname_send(state, state->ev,
- state->domain->name,
+ domain_name,
NULL, /* domain_guid */
NULL, /* site_name */
DS_RETURN_DNS_NAME); /* flags */
diff --git a/source3/winbindd/winbindd_proto.h b/source3/winbindd/winbindd_proto.h
index 4dee9b046cf..292b96ee5fa 100644
--- a/source3/winbindd/winbindd_proto.h
+++ b/source3/winbindd/winbindd_proto.h
@@ -603,6 +603,7 @@ bool parse_sidlist(TALLOC_CTX *mem_ctx, const char *sidstr,
struct dom_sid **sids, uint32_t *num_sids);
bool parse_xidlist(TALLOC_CTX *mem_ctx, const char *xidstr,
struct unixid **pxids, uint32_t *pnum_xids);
+const char *find_dns_domain_name(const char *domain_name);
/* The following definitions come from winbindd/winbindd_wins.c */
diff --git a/source3/winbindd/winbindd_util.c b/source3/winbindd/winbindd_util.c
index 7527a78b30e..5c832fc22b5 100644
--- a/source3/winbindd/winbindd_util.c
+++ b/source3/winbindd/winbindd_util.c
@@ -2241,3 +2241,22 @@ fail:
TALLOC_FREE(xids);
return false;
}
+
+/**
+ * Helper to extract the DNS Domain Name from a struct winbindd_domain
+ */
+const char *find_dns_domain_name(const char *domain_name)
+{
+ struct winbindd_domain *wbdom = NULL;
+
+ wbdom = find_domain_from_name(domain_name);
+ if (wbdom == NULL) {
+ return domain_name;
+ }
+
+ if (wbdom->active_directory && wbdom->alt_name != NULL) {
+ return wbdom->alt_name;
+ }
+
+ return wbdom->name;
+}
--
2.47.2

View File

@ -1,74 +0,0 @@
From 81fc67cce2a076236a82ab5336ed3a9260f12af1 Mon Sep 17 00:00:00 2001
From: Andreas Schneider <asn@samba.org>
Date: Tue, 21 Jan 2025 17:59:27 +0100
Subject: [PATCH] lib:replace: Don't use deprecated readline CPPFunction cast
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
HAVE_RL_COMPLETION_FUNC_T was unused and not checking for the right
function.
libcli/smbreadline/smbreadline.c: In function smb_readline:
libcli/smbreadline/smbreadline.c:139:17: warning: CPPFunction is deprecated [-Wdeprecated-declarations]
139 | rl_attempted_completion_function = RL_COMPLETION_CAST completion_fn;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
libcli/smbreadline/smbreadline.c:139:50: error: assignment to char ** (*)(const char *, int, int) from incompatible pointer type char ** (*)(void) [-Wincompatible-pointer-types]
139 | rl_attempted_completion_function = RL_COMPLETION_CAST completion_fn;
| ^
BUG: https://bugzilla.samba.org/show_bug.cgi?id=15788
Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Alexander Bokovoy <ab@samba.org>
Autobuild-User(master): Andreas Schneider <asn@cryptomilk.org>
Autobuild-Date(master): Tue Jan 21 19:38:37 UTC 2025 on atb-devel-224
(cherry picked from commit 9aa5c43315d83c19514251a11c4fba5a137f2821)
Autobuild-User(v4-21-test): Jule Anger <janger@samba.org>
Autobuild-Date(v4-21-test): Thu Jan 23 15:15:06 UTC 2025 on atb-devel-224
---
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
--
GitLab

View File

@ -1,385 +0,0 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{11..13} )
PYTHON_REQ_USE="threads(+),xml(+)"
inherit python-single-r1 flag-o-matic waf-utils multilib-minimal linux-info systemd pam tmpfiles
DESCRIPTION="Samba Suite Version 4"
HOMEPAGE="https://samba.org/"
MY_PV="${PV/_rc/rc}"
MY_P="${PN}-${MY_PV}"
if [[ ${PV} == *_rc* ]]; then
SRC_URI="https://download.samba.org/pub/samba/rc/${MY_P}.tar.gz"
else
SRC_URI="https://download.samba.org/pub/samba/stable/${MY_P}.tar.gz"
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~sparc x86"
fi
S="${WORKDIR}/${MY_P}"
LICENSE="GPL-3"
SLOT="0"
IUSE="acl addc ads ceph client cluster cups debug fam glusterfs gpg"
IUSE+=" iprint json ldap llvm-libunwind pam profiling-data python quota +regedit selinux"
IUSE+=" snapper spotlight syslog system-heimdal +system-mitkrb5 systemd test unwind winbind"
IUSE+=" zeroconf"
REQUIRED_USE="${PYTHON_REQUIRED_USE}
addc? ( json python !system-mitkrb5 winbind )
ads? ( acl ldap python winbind )
cluster? ( ads )
gpg? ( addc )
spotlight? ( json )
test? ( python )
!ads? ( !addc )
?? ( system-heimdal system-mitkrb5 )
"
# the test suite is messed, it uses system-installed samba
# bits instead of what was built, tests things disabled via use
# flags, and generally just fails to work in a way ebuilds could
# rely on in its current state
RESTRICT="test"
MULTILIB_WRAPPED_HEADERS=(
/usr/include/samba-4.0/policy.h
/usr/include/samba-4.0/dcerpc_server.h
/usr/include/samba-4.0/ctdb.h
/usr/include/samba-4.0/ctdb_client.h
/usr/include/samba-4.0/ctdb_protocol.h
/usr/include/samba-4.0/ctdb_private.h
/usr/include/samba-4.0/ctdb_typesafe_cb.h
/usr/include/samba-4.0/ctdb_version.h
)
TALLOC_VERSION="2.4.2"
TDB_VERSION="1.4.10"
TEVENT_VERSION="0.16.1"
COMMON_DEPEND="
>=app-arch/libarchive-3.1.2:=[${MULTILIB_USEDEP}]
dev-lang/perl:=
dev-libs/icu:=[${MULTILIB_USEDEP}]
dev-libs/libbsd[${MULTILIB_USEDEP}]
dev-libs/libtasn1:=[${MULTILIB_USEDEP}]
dev-libs/popt[${MULTILIB_USEDEP}]
dev-perl/Parse-Yapp
>=net-libs/gnutls-3.4.7:=[${MULTILIB_USEDEP}]
>=sys-fs/e2fsprogs-1.46.4-r51[${MULTILIB_USEDEP}]
>=sys-libs/ldb-2.9.2:=[ldap(+)?,${MULTILIB_USEDEP}]
<sys-libs/ldb-2.10.0:=[ldap(+)?,${MULTILIB_USEDEP}]
sys-libs/libcap[${MULTILIB_USEDEP}]
sys-libs/liburing:=[${MULTILIB_USEDEP}]
sys-libs/ncurses:=
sys-libs/readline:=
>=sys-libs/talloc-${TALLOC_VERSION}[${MULTILIB_USEDEP}]
>=sys-libs/tdb-${TDB_VERSION}[${MULTILIB_USEDEP}]
>=sys-libs/tevent-${TEVENT_VERSION}[${MULTILIB_USEDEP}]
virtual/zlib:=[${MULTILIB_USEDEP}]
virtual/libcrypt:=[${MULTILIB_USEDEP}]
virtual/libiconv
$(python_gen_cond_dep '
addc? (
dev-python/dnspython:=[${PYTHON_USEDEP}]
dev-python/markdown[${PYTHON_USEDEP}]
)
ads? (
dev-python/dnspython:=[${PYTHON_USEDEP}]
net-dns/bind[gssapi]
)
')
acl? ( virtual/acl )
ceph? ( sys-cluster/ceph )
cluster? ( net-libs/rpcsvc-proto )
cups? ( net-print/cups )
debug? ( dev-util/lttng-ust )
fam? ( virtual/fam )
gpg? ( app-crypt/gpgme:= )
json? ( dev-libs/jansson:= )
ldap? ( net-nds/openldap:=[${MULTILIB_USEDEP}] )
pam? ( sys-libs/pam )
python? (
sys-libs/ldb[python,${PYTHON_SINGLE_USEDEP}]
sys-libs/talloc[python,${PYTHON_SINGLE_USEDEP}]
sys-libs/tdb[python,${PYTHON_SINGLE_USEDEP}]
sys-libs/tevent[python,${PYTHON_SINGLE_USEDEP}]
)
snapper? ( sys-apps/dbus )
system-heimdal? ( >=app-crypt/heimdal-1.5[-ssl(-),${MULTILIB_USEDEP}] )
system-mitkrb5? ( >=app-crypt/mit-krb5-1.19[${MULTILIB_USEDEP}] )
!system-heimdal? ( !system-mitkrb5? ( sys-apps/keyutils[${MULTILIB_USEDEP}] ) )
systemd? ( sys-apps/systemd:= )
unwind? (
llvm-libunwind? ( llvm-runtimes/libunwind:= )
!llvm-libunwind? ( sys-libs/libunwind:= )
)
zeroconf? ( net-dns/avahi[dbus] )
"
DEPEND="${COMMON_DEPEND}
dev-perl/JSON
net-libs/libtirpc[${MULTILIB_USEDEP}]
net-libs/rpcsvc-proto
spotlight? ( dev-libs/glib )
test? (
>=dev-util/cmocka-1.1.3[${MULTILIB_USEDEP}]
$(python_gen_cond_dep "dev-python/python-subunit[\${PYTHON_USEDEP},${MULTILIB_USEDEP}]" )
!system-mitkrb5? (
>=net-dns/resolv_wrapper-1.1.4
>=net-libs/socket_wrapper-1.1.9
>=sys-libs/nss_wrapper-1.1.3
>=sys-libs/uid_wrapper-1.2.1
)
)"
RDEPEND="${COMMON_DEPEND}
client? ( net-fs/cifs-utils[ads?] )
python? ( ${PYTHON_DEPS} )
selinux? ( sec-policy/selinux-samba )
"
BDEPEND="${PYTHON_DEPS}
app-text/docbook-xsl-stylesheets
dev-libs/libxslt
virtual/pkgconfig
"
PATCHES=(
"${FILESDIR}"/${PN}-4.18.4-pam.patch
"${FILESDIR}"/ldb-2.5.2-skip-wav-tevent-check.patch
"${FILESDIR}"/${P}-dont-use-deprecated-readline-CPPFunction-cast.patch
"${FILESDIR}"/${P}-CVE-2025-0620.patch
)
CONFDIR="${FILESDIR}/4.4"
WAF_BINARY="${S}/buildtools/bin/waf"
SHAREDMODS=""
pkg_setup() {
# Package fails to build with distcc
export DISTCC_DISABLE=1
export PYTHONHASHSEED=1
python-single-r1_pkg_setup
SHAREDMODS="$(usev !snapper '!')vfs_snapper"
if use cluster ; then
SHAREDMODS+=",idmap_rid,idmap_tdb2,idmap_ad"
elif use ads ; then
SHAREDMODS+=",idmap_ad"
fi
}
check_samba_dep_versions() {
actual_talloc_version=$(sed -En '/^VERSION =/{s/[^0-9.]//gp}' lib/talloc/wscript || die)
if [[ ${actual_talloc_version} != ${TALLOC_VERSION} ]] ; then
eerror "Source talloc version: ${TALLOC_VERSION}"
eerror "Ebuild talloc version: ${actual_talloc_version}"
die "Ebuild needs to fix TALLOC_VERSION!"
fi
actual_tdb_version=$(sed -En '/^VERSION =/{s/[^0-9.]//gp}' lib/tdb/wscript || die)
if [[ ${actual_tdb_version} != ${TDB_VERSION} ]] ; then
eerror "Source tdb version: ${TDB_VERSION}"
eerror "Ebuild tdb version: ${actual_tdb_version}"
die "Ebuild needs to fix TDB_VERSION!"
fi
actual_tevent_version=$(sed -En '/^VERSION =/{s/[^0-9.]//gp}' lib/tevent/wscript || die)
if [[ ${actual_tevent_version} != ${TEVENT_VERSION} ]] ; then
eerror "Source tevent version: ${TEVENT_VERSION}"
eerror "Ebuild tevent version: ${actual_tevent_version}"
die "Ebuild needs to fix TEVENT_VERSION!"
fi
}
src_prepare() {
default
check_samba_dep_versions
# Unbundle dnspython
sed -i -e '/"dns.resolver":/d' "${S}"/third_party/wscript || die
# Unbundle iso8601 unless tests are enabled
if ! use test ; then
sed -i -e '/"iso8601":/d' "${S}"/third_party/wscript || die
fi
# Ugly hackaround for bug #592502
#cp /usr/include/tevent_internal.h "${S}"/lib/tevent/ || die
# WAF
multilib_copy_sources
}
multilib_src_configure() {
# When specifying libs for samba build you must append NONE to the end to
# stop it automatically including things
local bundled_libs="NONE"
if ! use system-heimdal && ! use system-mitkrb5 ; then
bundled_libs="heimbase,heimntlm,hdb,kdc,krb5,wind,gssapi,hcrypto,hx509,roken,asn1,com_err,NONE"
fi
# We "use" bundled cmocka when we're not running tests as we're
# not using it anyway. Means we avoid making users install it for
# no reason. bug #802531
if ! use test ; then
bundled_libs="cmocka,${bundled_libs}"
fi
# bug #874633
if use llvm-libunwind ; then
mkdir -p "${T}"/${ABI}/pkgconfig || die
local -x PKG_CONFIG_PATH="${T}/${ABI}/pkgconfig:${PKG_CONFIG_PATH}"
cat <<-EOF > "${T}"/${ABI}/pkgconfig/libunwind-generic.pc || die
exec_prefix=\${prefix}
libdir=/usr/$(get_libdir)
includedir=\${prefix}/include
Name: libunwind-generic
Description: libunwind generic library
Version: 1.70
Libs: -L\${libdir} -lunwind
Cflags: -I\${includedir}
EOF
fi
local myconf=(
--enable-fhs
--sysconfdir="${EPREFIX}/etc"
--localstatedir="${EPREFIX}/var"
--with-modulesdir="${EPREFIX}/usr/$(get_libdir)/samba"
--with-piddir="${EPREFIX}/run/${PN}"
--bundled-libraries="${bundled_libs}"
--builtin-libraries=NONE
--disable-rpath
--disable-rpath-install
--nopyc
--nopyo
--without-winexe
$(multilib_native_use_with acl acl-support)
$(multilib_native_usex addc '' '--without-ad-dc')
$(multilib_native_use_with ads)
$(multilib_native_use_enable ceph cephfs)
$(multilib_native_use_with cluster cluster-support)
$(multilib_native_use_enable cups)
--without-dmapi
$(multilib_native_use_with fam)
$(multilib_native_use_enable glusterfs)
$(multilib_native_use_with gpg gpgme)
$(multilib_native_use_with json)
$(multilib_native_use_enable iprint)
$(multilib_native_use_with pam)
$(multilib_native_usex pam "--with-pammodulesdir=${EPREFIX}/$(get_libdir)/security" '')
$(multilib_native_use_with quota quotas)
$(multilib_native_use_with regedit)
$(multilib_native_use_enable spotlight)
$(multilib_native_use_with syslog)
$(multilib_native_use_with systemd)
--systemd-install-services
--with-systemddir="$(systemd_get_systemunitdir)"
$(multilib_native_use_with unwind libunwind)
$(multilib_native_use_with winbind)
$(multilib_native_usex python '' '--disable-python')
$(multilib_native_use_enable zeroconf avahi)
$(multilib_native_usex test '--enable-selftest' '')
$(usev system-mitkrb5 "--with-system-mitkrb5 ${ESYSROOT}/usr $(multilib_native_usex addc --with-experimental-mit-ad-dc '')")
$(use_with debug lttng)
$(use_with ldap)
$(use_with profiling-data)
# bug #683148
--jobs 1
)
if multilib_is_native_abi ; then
myconf+=( --with-shared-modules=${SHAREDMODS} )
else
myconf+=( --with-shared-modules=DEFAULT,!vfs_snapper )
fi
append-ldflags $(test-flags-CCLD -Wl,--undefined-version) # bug 914898
append-cppflags "-I${ESYSROOT}/usr/include/et"
waf-utils_src_configure ${myconf[@]}
}
multilib_src_compile() {
waf-utils_src_compile
}
multilib_src_test() {
if multilib_is_native_abi ; then
"${WAF_BINARY}" test || die "Test failed"
fi
}
multilib_src_install() {
waf-utils_src_install
# Make all .so files executable
find "${ED}" -type f -name "*.so" -exec chmod +x {} + || die
# smbspool_krb5_wrapper must only be accessible to root, bug #880739
find "${ED}" -type f -name "smbspool_krb5_wrapper" -exec chmod go-rwx {} + || die
# Remove empty runtime dirs created by build system (bug #892341)
find "${ED}"/{run,var} -type d -empty -delete || die
if multilib_is_native_abi ; then
# Install ldap schema for server (bug #491002)
if use ldap ; then
insinto /etc/openldap/schema
doins examples/LDAP/samba.schema
fi
# Create symlink for cups (bug #552310)
if use cups ; then
dosym ../../../bin/smbspool \
/usr/libexec/cups/backend/smb
fi
# Install example config file
insinto /etc/samba
doins examples/smb.conf.default
# Fix paths in example file (bug #603964)
sed \
-e '/log file =/s@/usr/local/samba/var/@/var/log/samba/@' \
-e '/include =/s@/usr/local/samba/lib/@/etc/samba/@' \
-e '/path =/s@/usr/local/samba/lib/@/var/lib/samba/@' \
-e '/path =/s@/usr/local/samba/@/var/lib/samba/@' \
-e '/path =/s@/usr/spool/samba@/var/spool/samba@' \
-i "${ED}"/etc/samba/smb.conf.default || die
# Install init script and conf.d file
newinitd "${CONFDIR}/samba4.initd-r1" samba
newconfd "${CONFDIR}/samba4.confd" samba
dotmpfiles "${FILESDIR}"/samba.conf
if ! use addc ; then
rm "${D}/$(systemd_get_systemunitdir)/samba.service" \
|| die
fi
# Preserve functionality for old gentoo-specific unit names
dosym nmb.service "$(systemd_get_systemunitdir)/nmbd.service"
dosym smb.service "$(systemd_get_systemunitdir)/smbd.service"
dosym winbind.service "$(systemd_get_systemunitdir)/winbindd.service"
use python && python_optimize
fi
if use pam && use winbind ; then
newpamd "${CONFDIR}/system-auth-winbind.pam" system-auth-winbind
# bugs #376853 and #590374
insinto /etc/security
doins examples/pam_winbind/pam_winbind.conf
fi
}
pkg_postinst() {
tmpfiles_process samba.conf
}

View File

@ -1,389 +0,0 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{11..13} )
PYTHON_REQ_USE="threads(+),xml(+)"
inherit python-single-r1 flag-o-matic waf-utils multilib-minimal linux-info systemd pam tmpfiles
DESCRIPTION="Samba Suite Version 4"
HOMEPAGE="https://samba.org/"
MY_PV="${PV/_rc/rc}"
MY_P="${PN}-${MY_PV}"
if [[ ${PV} == *_rc* ]]; then
SRC_URI="https://download.samba.org/pub/samba/rc/${MY_P}.tar.gz"
else
SRC_URI="https://download.samba.org/pub/samba/stable/${MY_P}.tar.gz"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
fi
S="${WORKDIR}/${MY_P}"
LICENSE="GPL-3"
SLOT="0/2.10.0"
IUSE="acl addc ads ceph client cluster cups debug fam glusterfs gpg"
IUSE+=" iprint json ldap llvm-libunwind lmdb pam profiling-data python quota"
IUSE+=" +regedit selinux snapper spotlight syslog system-heimdal +system-mitkrb5"
IUSE+=" systemd test unwind winbind zeroconf"
# ldap needs ads (bug #941578)
REQUIRED_USE="${PYTHON_REQUIRED_USE}
addc? ( json python !system-mitkrb5 winbind )
ads? ( acl ldap python winbind )
cluster? ( ads )
gpg? ( addc )
ldap? ( ads )
spotlight? ( json )
test? ( python )
!ads? ( !addc )
?? ( system-heimdal system-mitkrb5 )
"
# the test suite is messed, it uses system-installed samba
# bits instead of what was built, tests things disabled via use
# flags, and generally just fails to work in a way ebuilds could
# rely on in its current state
RESTRICT="test"
MULTILIB_WRAPPED_HEADERS=(
/usr/include/samba-4.0/policy.h
/usr/include/samba-4.0/dcerpc_server.h
/usr/include/samba-4.0/ctdb.h
/usr/include/samba-4.0/ctdb_client.h
/usr/include/samba-4.0/ctdb_protocol.h
/usr/include/samba-4.0/ctdb_private.h
/usr/include/samba-4.0/ctdb_typesafe_cb.h
/usr/include/samba-4.0/ctdb_version.h
)
TALLOC_VERSION="2.4.2"
TDB_VERSION="1.4.12"
TEVENT_VERSION="0.16.1"
COMMON_DEPEND="
>=app-arch/libarchive-3.1.2:=[${MULTILIB_USEDEP}]
dev-lang/perl:=
dev-libs/icu:=[${MULTILIB_USEDEP}]
dev-libs/libbsd[${MULTILIB_USEDEP}]
dev-libs/libtasn1:=[${MULTILIB_USEDEP}]
dev-libs/popt[${MULTILIB_USEDEP}]
dev-perl/Parse-Yapp
>=net-libs/gnutls-3.4.7:=[${MULTILIB_USEDEP}]
>=sys-fs/e2fsprogs-1.46.4-r51[${MULTILIB_USEDEP}]
!sys-libs/ldb
sys-libs/libcap[${MULTILIB_USEDEP}]
sys-libs/liburing:=[${MULTILIB_USEDEP}]
sys-libs/ncurses:=
sys-libs/readline:=
>=sys-libs/talloc-${TALLOC_VERSION}[${MULTILIB_USEDEP}]
>=sys-libs/tdb-${TDB_VERSION}[${MULTILIB_USEDEP}]
>=sys-libs/tevent-${TEVENT_VERSION}[${MULTILIB_USEDEP}]
virtual/zlib:=[${MULTILIB_USEDEP}]
virtual/libcrypt:=[${MULTILIB_USEDEP}]
virtual/libiconv
$(python_gen_cond_dep '
addc? (
dev-python/dnspython:=[${PYTHON_USEDEP}]
dev-python/markdown[${PYTHON_USEDEP}]
)
ads? (
dev-python/dnspython:=[${PYTHON_USEDEP}]
net-dns/bind[gssapi]
)
')
acl? ( virtual/acl )
ceph? ( sys-cluster/ceph )
cluster? ( net-libs/rpcsvc-proto )
cups? ( net-print/cups )
debug? ( dev-util/lttng-ust )
fam? ( virtual/fam )
gpg? ( app-crypt/gpgme:= )
json? ( dev-libs/jansson:= )
ldap? ( net-nds/openldap:=[${MULTILIB_USEDEP}] )
lmdb? ( >=dev-db/lmdb-0.9.16:=[${MULTILIB_USEDEP}] )
pam? ( sys-libs/pam )
python? (
sys-libs/talloc[python,${PYTHON_SINGLE_USEDEP}]
sys-libs/tdb[python,${PYTHON_SINGLE_USEDEP}]
sys-libs/tevent[python,${PYTHON_SINGLE_USEDEP}]
)
snapper? ( sys-apps/dbus )
system-heimdal? ( >=app-crypt/heimdal-1.5[-ssl(-),${MULTILIB_USEDEP}] )
system-mitkrb5? ( >=app-crypt/mit-krb5-1.19[${MULTILIB_USEDEP}] )
!system-heimdal? ( !system-mitkrb5? ( sys-apps/keyutils[${MULTILIB_USEDEP}] ) )
systemd? ( sys-apps/systemd:= )
unwind? (
llvm-libunwind? ( llvm-runtimes/libunwind:= )
!llvm-libunwind? ( sys-libs/libunwind:= )
)
zeroconf? ( net-dns/avahi[dbus] )
"
DEPEND="${COMMON_DEPEND}
dev-perl/JSON
net-libs/libtirpc[${MULTILIB_USEDEP}]
net-libs/rpcsvc-proto
spotlight? ( dev-libs/glib )
test? (
>=dev-util/cmocka-1.1.3[${MULTILIB_USEDEP}]
$(python_gen_cond_dep "dev-python/python-subunit[\${PYTHON_USEDEP},${MULTILIB_USEDEP}]" )
!system-mitkrb5? (
>=net-dns/resolv_wrapper-1.1.4
>=net-libs/socket_wrapper-1.1.9
>=sys-libs/nss_wrapper-1.1.3
>=sys-libs/uid_wrapper-1.2.1
)
)"
RDEPEND="${COMMON_DEPEND}
client? ( net-fs/cifs-utils[ads?] )
python? ( ${PYTHON_DEPS} )
selinux? ( sec-policy/selinux-samba )
"
BDEPEND="${PYTHON_DEPS}
app-text/docbook-xsl-stylesheets
dev-libs/libxslt
virtual/pkgconfig
"
PATCHES=(
"${FILESDIR}"/${PN}-4.18.4-pam.patch
"${FILESDIR}"/ldb-2.5.2-skip-wav-tevent-check.patch
)
CONFDIR="${FILESDIR}/4.4"
WAF_BINARY="${S}/buildtools/bin/waf"
SHAREDMODS=""
pkg_setup() {
# Package fails to build with distcc
export DISTCC_DISABLE=1
export PYTHONHASHSEED=1
python-single-r1_pkg_setup
SHAREDMODS="$(usev !snapper '!')vfs_snapper"
if use cluster ; then
SHAREDMODS+=",idmap_rid,idmap_tdb2,idmap_ad"
elif use ads ; then
SHAREDMODS+=",idmap_ad"
fi
}
check_samba_dep_versions() {
actual_talloc_version=$(sed -En '/^VERSION =/{s/[^0-9.]//gp}' lib/talloc/wscript || die)
if [[ ${actual_talloc_version} != ${TALLOC_VERSION} ]] ; then
eerror "Source talloc version: ${TALLOC_VERSION}"
eerror "Ebuild talloc version: ${actual_talloc_version}"
die "Ebuild needs to fix TALLOC_VERSION!"
fi
actual_tdb_version=$(sed -En '/^VERSION =/{s/[^0-9.]//gp}' lib/tdb/wscript || die)
if [[ ${actual_tdb_version} != ${TDB_VERSION} ]] ; then
eerror "Source tdb version: ${TDB_VERSION}"
eerror "Ebuild tdb version: ${actual_tdb_version}"
die "Ebuild needs to fix TDB_VERSION!"
fi
actual_tevent_version=$(sed -En '/^VERSION =/{s/[^0-9.]//gp}' lib/tevent/wscript || die)
if [[ ${actual_tevent_version} != ${TEVENT_VERSION} ]] ; then
eerror "Source tevent version: ${TEVENT_VERSION}"
eerror "Ebuild tevent version: ${actual_tevent_version}"
die "Ebuild needs to fix TEVENT_VERSION!"
fi
}
src_prepare() {
default
check_samba_dep_versions
# Unbundle dnspython
sed -i -e '/"dns.resolver":/d' "${S}"/third_party/wscript || die
# Unbundle iso8601 unless tests are enabled
if ! use test ; then
sed -i -e '/"iso8601":/d' "${S}"/third_party/wscript || die
fi
# Ugly hackaround for bug #592502
#cp /usr/include/tevent_internal.h "${S}"/lib/tevent/ || die
# bug #943942
append-cflags -std=gnu17
# WAF
multilib_copy_sources
}
multilib_src_configure() {
# When specifying libs for samba build you must append NONE to the end to
# stop it automatically including things
local bundled_libs="NONE"
if ! use system-heimdal && ! use system-mitkrb5 ; then
bundled_libs="heimbase,heimntlm,hdb,kdc,krb5,wind,gssapi,hcrypto,hx509,roken,asn1,com_err,NONE"
fi
# We "use" bundled cmocka when we're not running tests as we're
# not using it anyway. Means we avoid making users install it for
# no reason. bug #802531
if ! use test ; then
bundled_libs="cmocka,${bundled_libs}"
fi
# bug #874633
if use llvm-libunwind ; then
mkdir -p "${T}"/${ABI}/pkgconfig || die
local -x PKG_CONFIG_PATH="${T}/${ABI}/pkgconfig:${PKG_CONFIG_PATH}"
cat <<-EOF > "${T}"/${ABI}/pkgconfig/libunwind-generic.pc || die
exec_prefix=\${prefix}
libdir=/usr/$(get_libdir)
includedir=\${prefix}/include
Name: libunwind-generic
Description: libunwind generic library
Version: 1.70
Libs: -L\${libdir} -lunwind
Cflags: -I\${includedir}
EOF
fi
local myconf=(
--enable-fhs
--sysconfdir="${EPREFIX}/etc"
--localstatedir="${EPREFIX}/var"
--with-modulesdir="${EPREFIX}/usr/$(get_libdir)/samba"
--with-piddir="${EPREFIX}/run/${PN}"
--bundled-libraries="${bundled_libs}"
--builtin-libraries=NONE
--disable-rpath
--disable-rpath-install
--nopyc
--nopyo
--without-winexe
$(multilib_native_use_with acl acl-support)
$(multilib_native_usex addc '' '--without-ad-dc')
$(multilib_native_use_enable ceph cephfs)
$(multilib_native_use_with cluster cluster-support)
$(multilib_native_use_enable cups)
--without-dmapi
$(multilib_native_use_with fam)
$(multilib_native_use_enable glusterfs)
$(multilib_native_use_with gpg gpgme)
$(multilib_native_use_with json)
$(multilib_native_use_enable iprint)
$(multilib_native_use_with pam)
$(multilib_native_usex pam "--with-pammodulesdir=${EPREFIX}/$(get_libdir)/security" '')
$(multilib_native_use_with quota quotas)
$(multilib_native_use_with regedit)
$(multilib_native_use_enable spotlight)
$(multilib_native_use_with syslog)
$(multilib_native_use_with systemd)
--systemd-install-services
--with-systemddir="$(systemd_get_systemunitdir)"
$(multilib_native_use_with unwind libunwind)
$(multilib_native_use_with winbind)
$(multilib_native_usex python '' '--disable-python')
$(multilib_native_use_enable zeroconf avahi)
$(multilib_native_usex test '--enable-selftest' '')
$(usev system-mitkrb5 "--with-system-mitkrb5 ${ESYSROOT}/usr $(multilib_native_usex addc --with-experimental-mit-ad-dc '')")
$(use_with ads)
$(use_with debug lttng)
$(use_with ldap)
$(use_with profiling-data)
--private-libraries='!ldb'
$(usex lmdb '' --without-ldb-lmdb)
# bug #683148
--jobs 1
)
if multilib_is_native_abi ; then
myconf+=( --with-shared-modules=${SHAREDMODS} )
else
myconf+=( --with-shared-modules=DEFAULT,!vfs_snapper )
fi
append-ldflags $(test-flags-CCLD -Wl,--undefined-version) # bug 914898
append-cppflags "-I${ESYSROOT}/usr/include/et"
waf-utils_src_configure ${myconf[@]}
}
multilib_src_compile() {
waf-utils_src_compile
}
multilib_src_test() {
if multilib_is_native_abi ; then
"${WAF_BINARY}" test || die "Test failed"
fi
}
multilib_src_install() {
waf-utils_src_install
# Make all .so files executable
find "${ED}" -type f -name "*.so" -exec chmod +x {} + || die
# smbspool_krb5_wrapper must only be accessible to root, bug #880739
find "${ED}" -type f -name "smbspool_krb5_wrapper" -exec chmod go-rwx {} + || die
# Remove empty runtime dirs created by build system (bug #892341)
find "${ED}"/{run,var} -type d -empty -delete || die
if multilib_is_native_abi ; then
# Install ldap schema for server (bug #491002)
if use ldap ; then
insinto /etc/openldap/schema
doins examples/LDAP/samba.schema
fi
# Create symlink for cups (bug #552310)
if use cups ; then
dosym ../../../bin/smbspool \
/usr/libexec/cups/backend/smb
fi
# Install example config file
insinto /etc/samba
doins examples/smb.conf.default
# Fix paths in example file (bug #603964)
sed \
-e '/log file =/s@/usr/local/samba/var/@/var/log/samba/@' \
-e '/include =/s@/usr/local/samba/lib/@/etc/samba/@' \
-e '/path =/s@/usr/local/samba/lib/@/var/lib/samba/@' \
-e '/path =/s@/usr/local/samba/@/var/lib/samba/@' \
-e '/path =/s@/usr/spool/samba@/var/spool/samba@' \
-i "${ED}"/etc/samba/smb.conf.default || die
# Install init script and conf.d file
newinitd "${CONFDIR}/samba4.initd-r1" samba
newconfd "${CONFDIR}/samba4.confd" samba
dotmpfiles "${FILESDIR}"/samba.conf
if ! use addc ; then
rm "${D}/$(systemd_get_systemunitdir)/samba.service" \
|| die
fi
# Preserve functionality for old gentoo-specific unit names
dosym nmb.service "$(systemd_get_systemunitdir)/nmbd.service"
dosym smb.service "$(systemd_get_systemunitdir)/smbd.service"
dosym winbind.service "$(systemd_get_systemunitdir)/winbindd.service"
use python && python_optimize
fi
if use pam && use winbind ; then
newpamd "${CONFDIR}/system-auth-winbind.pam" system-auth-winbind
# bugs #376853 and #590374
insinto /etc/security
doins examples/pam_winbind/pam_winbind.conf
fi
}
pkg_postinst() {
tmpfiles_process samba.conf
}

View File

@ -1,389 +0,0 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{11..13} )
PYTHON_REQ_USE="threads(+),xml(+)"
inherit python-single-r1 flag-o-matic waf-utils multilib-minimal linux-info systemd pam tmpfiles
DESCRIPTION="Samba Suite Version 4"
HOMEPAGE="https://samba.org/"
MY_PV="${PV/_rc/rc}"
MY_P="${PN}-${MY_PV}"
if [[ ${PV} == *_rc* ]]; then
SRC_URI="https://download.samba.org/pub/samba/rc/${MY_P}.tar.gz"
else
SRC_URI="https://download.samba.org/pub/samba/stable/${MY_P}.tar.gz"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
fi
S="${WORKDIR}/${MY_P}"
LICENSE="GPL-3"
SLOT="0/2.10.0"
IUSE="acl addc ads ceph client cluster cups debug fam glusterfs gpg"
IUSE+=" iprint json ldap llvm-libunwind lmdb pam profiling-data python quota"
IUSE+=" +regedit selinux snapper spotlight syslog system-heimdal +system-mitkrb5"
IUSE+=" systemd test unwind winbind zeroconf"
# ldap needs ads (bug #941578)
REQUIRED_USE="${PYTHON_REQUIRED_USE}
addc? ( json python !system-mitkrb5 winbind )
ads? ( acl ldap python winbind )
cluster? ( ads )
gpg? ( addc )
ldap? ( ads )
spotlight? ( json )
test? ( python )
!ads? ( !addc )
?? ( system-heimdal system-mitkrb5 )
"
# the test suite is messed, it uses system-installed samba
# bits instead of what was built, tests things disabled via use
# flags, and generally just fails to work in a way ebuilds could
# rely on in its current state
RESTRICT="test"
MULTILIB_WRAPPED_HEADERS=(
/usr/include/samba-4.0/policy.h
/usr/include/samba-4.0/dcerpc_server.h
/usr/include/samba-4.0/ctdb.h
/usr/include/samba-4.0/ctdb_client.h
/usr/include/samba-4.0/ctdb_protocol.h
/usr/include/samba-4.0/ctdb_private.h
/usr/include/samba-4.0/ctdb_typesafe_cb.h
/usr/include/samba-4.0/ctdb_version.h
)
TALLOC_VERSION="2.4.2"
TDB_VERSION="1.4.12"
TEVENT_VERSION="0.16.1"
COMMON_DEPEND="
>=app-arch/libarchive-3.1.2:=[${MULTILIB_USEDEP}]
dev-lang/perl:=
dev-libs/icu:=[${MULTILIB_USEDEP}]
dev-libs/libbsd[${MULTILIB_USEDEP}]
dev-libs/libtasn1:=[${MULTILIB_USEDEP}]
dev-libs/popt[${MULTILIB_USEDEP}]
dev-perl/Parse-Yapp
>=net-libs/gnutls-3.4.7:=[${MULTILIB_USEDEP}]
>=sys-fs/e2fsprogs-1.46.4-r51[${MULTILIB_USEDEP}]
!sys-libs/ldb
sys-libs/libcap[${MULTILIB_USEDEP}]
sys-libs/liburing:=[${MULTILIB_USEDEP}]
sys-libs/ncurses:=
sys-libs/readline:=
>=sys-libs/talloc-${TALLOC_VERSION}[${MULTILIB_USEDEP}]
>=sys-libs/tdb-${TDB_VERSION}[${MULTILIB_USEDEP}]
>=sys-libs/tevent-${TEVENT_VERSION}[${MULTILIB_USEDEP}]
virtual/zlib:=[${MULTILIB_USEDEP}]
virtual/libcrypt:=[${MULTILIB_USEDEP}]
virtual/libiconv
$(python_gen_cond_dep '
addc? (
dev-python/dnspython:=[${PYTHON_USEDEP}]
dev-python/markdown[${PYTHON_USEDEP}]
)
ads? (
dev-python/dnspython:=[${PYTHON_USEDEP}]
net-dns/bind[gssapi]
)
')
acl? ( virtual/acl )
ceph? ( sys-cluster/ceph )
cluster? ( net-libs/rpcsvc-proto )
cups? ( net-print/cups )
debug? ( dev-util/lttng-ust )
fam? ( virtual/fam )
gpg? ( app-crypt/gpgme:= )
json? ( dev-libs/jansson:= )
ldap? ( net-nds/openldap:=[${MULTILIB_USEDEP}] )
lmdb? ( >=dev-db/lmdb-0.9.16:=[${MULTILIB_USEDEP}] )
pam? ( sys-libs/pam )
python? (
sys-libs/talloc[python,${PYTHON_SINGLE_USEDEP}]
sys-libs/tdb[python,${PYTHON_SINGLE_USEDEP}]
sys-libs/tevent[python,${PYTHON_SINGLE_USEDEP}]
)
snapper? ( sys-apps/dbus )
system-heimdal? ( >=app-crypt/heimdal-1.5[-ssl(-),${MULTILIB_USEDEP}] )
system-mitkrb5? ( >=app-crypt/mit-krb5-1.19[${MULTILIB_USEDEP}] )
!system-heimdal? ( !system-mitkrb5? ( sys-apps/keyutils[${MULTILIB_USEDEP}] ) )
systemd? ( sys-apps/systemd:= )
unwind? (
llvm-libunwind? ( llvm-runtimes/libunwind:= )
!llvm-libunwind? ( sys-libs/libunwind:= )
)
zeroconf? ( net-dns/avahi[dbus] )
"
DEPEND="${COMMON_DEPEND}
dev-perl/JSON
net-libs/libtirpc[${MULTILIB_USEDEP}]
net-libs/rpcsvc-proto
spotlight? ( dev-libs/glib )
test? (
>=dev-util/cmocka-1.1.3[${MULTILIB_USEDEP}]
$(python_gen_cond_dep "dev-python/python-subunit[\${PYTHON_USEDEP},${MULTILIB_USEDEP}]" )
!system-mitkrb5? (
>=net-dns/resolv_wrapper-1.1.4
>=net-libs/socket_wrapper-1.1.9
>=sys-libs/nss_wrapper-1.1.3
>=sys-libs/uid_wrapper-1.2.1
)
)"
RDEPEND="${COMMON_DEPEND}
client? ( net-fs/cifs-utils[ads?] )
python? ( ${PYTHON_DEPS} )
selinux? ( sec-policy/selinux-samba )
"
BDEPEND="${PYTHON_DEPS}
app-text/docbook-xsl-stylesheets
dev-libs/libxslt
virtual/pkgconfig
"
PATCHES=(
"${FILESDIR}"/${PN}-4.18.4-pam.patch
"${FILESDIR}"/ldb-2.5.2-skip-wav-tevent-check.patch
)
CONFDIR="${FILESDIR}/4.4"
WAF_BINARY="${S}/buildtools/bin/waf"
SHAREDMODS=""
pkg_setup() {
# Package fails to build with distcc
export DISTCC_DISABLE=1
export PYTHONHASHSEED=1
python-single-r1_pkg_setup
SHAREDMODS="$(usev !snapper '!')vfs_snapper"
if use cluster ; then
SHAREDMODS+=",idmap_rid,idmap_tdb2,idmap_ad"
elif use ads ; then
SHAREDMODS+=",idmap_ad"
fi
}
check_samba_dep_versions() {
actual_talloc_version=$(sed -En '/^VERSION =/{s/[^0-9.]//gp}' lib/talloc/wscript || die)
if [[ ${actual_talloc_version} != ${TALLOC_VERSION} ]] ; then
eerror "Source talloc version: ${TALLOC_VERSION}"
eerror "Ebuild talloc version: ${actual_talloc_version}"
die "Ebuild needs to fix TALLOC_VERSION!"
fi
actual_tdb_version=$(sed -En '/^VERSION =/{s/[^0-9.]//gp}' lib/tdb/wscript || die)
if [[ ${actual_tdb_version} != ${TDB_VERSION} ]] ; then
eerror "Source tdb version: ${TDB_VERSION}"
eerror "Ebuild tdb version: ${actual_tdb_version}"
die "Ebuild needs to fix TDB_VERSION!"
fi
actual_tevent_version=$(sed -En '/^VERSION =/{s/[^0-9.]//gp}' lib/tevent/wscript || die)
if [[ ${actual_tevent_version} != ${TEVENT_VERSION} ]] ; then
eerror "Source tevent version: ${TEVENT_VERSION}"
eerror "Ebuild tevent version: ${actual_tevent_version}"
die "Ebuild needs to fix TEVENT_VERSION!"
fi
}
src_prepare() {
default
check_samba_dep_versions
# Unbundle dnspython
sed -i -e '/"dns.resolver":/d' "${S}"/third_party/wscript || die
# Unbundle iso8601 unless tests are enabled
if ! use test ; then
sed -i -e '/"iso8601":/d' "${S}"/third_party/wscript || die
fi
# Ugly hackaround for bug #592502
#cp /usr/include/tevent_internal.h "${S}"/lib/tevent/ || die
# bug #943942
append-cflags -std=gnu17
# WAF
multilib_copy_sources
}
multilib_src_configure() {
# When specifying libs for samba build you must append NONE to the end to
# stop it automatically including things
local bundled_libs="NONE"
if ! use system-heimdal && ! use system-mitkrb5 ; then
bundled_libs="heimbase,heimntlm,hdb,kdc,krb5,wind,gssapi,hcrypto,hx509,roken,asn1,com_err,NONE"
fi
# We "use" bundled cmocka when we're not running tests as we're
# not using it anyway. Means we avoid making users install it for
# no reason. bug #802531
if ! use test ; then
bundled_libs="cmocka,${bundled_libs}"
fi
# bug #874633
if use llvm-libunwind ; then
mkdir -p "${T}"/${ABI}/pkgconfig || die
local -x PKG_CONFIG_PATH="${T}/${ABI}/pkgconfig:${PKG_CONFIG_PATH}"
cat <<-EOF > "${T}"/${ABI}/pkgconfig/libunwind-generic.pc || die
exec_prefix=\${prefix}
libdir=/usr/$(get_libdir)
includedir=\${prefix}/include
Name: libunwind-generic
Description: libunwind generic library
Version: 1.70
Libs: -L\${libdir} -lunwind
Cflags: -I\${includedir}
EOF
fi
local myconf=(
--enable-fhs
--sysconfdir="${EPREFIX}/etc"
--localstatedir="${EPREFIX}/var"
--with-modulesdir="${EPREFIX}/usr/$(get_libdir)/samba"
--with-piddir="${EPREFIX}/run/${PN}"
--bundled-libraries="${bundled_libs}"
--builtin-libraries=NONE
--disable-rpath
--disable-rpath-install
--nopyc
--nopyo
--without-winexe
$(multilib_native_use_with acl acl-support)
$(multilib_native_usex addc '' '--without-ad-dc')
$(multilib_native_use_enable ceph cephfs)
$(multilib_native_use_with cluster cluster-support)
$(multilib_native_use_enable cups)
--without-dmapi
$(multilib_native_use_with fam)
$(multilib_native_use_enable glusterfs)
$(multilib_native_use_with gpg gpgme)
$(multilib_native_use_with json)
$(multilib_native_use_enable iprint)
$(multilib_native_use_with pam)
$(multilib_native_usex pam "--with-pammodulesdir=${EPREFIX}/$(get_libdir)/security" '')
$(multilib_native_use_with quota quotas)
$(multilib_native_use_with regedit)
$(multilib_native_use_enable spotlight)
$(multilib_native_use_with syslog)
$(multilib_native_use_with systemd)
--systemd-install-services
--with-systemddir="$(systemd_get_systemunitdir)"
$(multilib_native_use_with unwind libunwind)
$(multilib_native_use_with winbind)
$(multilib_native_usex python '' '--disable-python')
$(multilib_native_use_enable zeroconf avahi)
$(multilib_native_usex test '--enable-selftest' '')
$(usev system-mitkrb5 "--with-system-mitkrb5 ${ESYSROOT}/usr $(multilib_native_usex addc --with-experimental-mit-ad-dc '')")
$(use_with ads)
$(use_with debug lttng)
$(use_with ldap)
$(use_with profiling-data)
--private-libraries='!ldb'
$(usex lmdb '' --without-ldb-lmdb)
# bug #683148
--jobs 1
)
if multilib_is_native_abi ; then
myconf+=( --with-shared-modules=${SHAREDMODS} )
else
myconf+=( --with-shared-modules=DEFAULT,!vfs_snapper )
fi
append-ldflags $(test-flags-CCLD -Wl,--undefined-version) # bug 914898
append-cppflags "-I${ESYSROOT}/usr/include/et"
waf-utils_src_configure ${myconf[@]}
}
multilib_src_compile() {
waf-utils_src_compile
}
multilib_src_test() {
if multilib_is_native_abi ; then
"${WAF_BINARY}" test || die "Test failed"
fi
}
multilib_src_install() {
waf-utils_src_install
# Make all .so files executable
find "${ED}" -type f -name "*.so" -exec chmod +x {} + || die
# smbspool_krb5_wrapper must only be accessible to root, bug #880739
find "${ED}" -type f -name "smbspool_krb5_wrapper" -exec chmod go-rwx {} + || die
# Remove empty runtime dirs created by build system (bug #892341)
find "${ED}"/{run,var} -type d -empty -delete || die
if multilib_is_native_abi ; then
# Install ldap schema for server (bug #491002)
if use ldap ; then
insinto /etc/openldap/schema
doins examples/LDAP/samba.schema
fi
# Create symlink for cups (bug #552310)
if use cups ; then
dosym ../../../bin/smbspool \
/usr/libexec/cups/backend/smb
fi
# Install example config file
insinto /etc/samba
doins examples/smb.conf.default
# Fix paths in example file (bug #603964)
sed \
-e '/log file =/s@/usr/local/samba/var/@/var/log/samba/@' \
-e '/include =/s@/usr/local/samba/lib/@/etc/samba/@' \
-e '/path =/s@/usr/local/samba/lib/@/var/lib/samba/@' \
-e '/path =/s@/usr/local/samba/@/var/lib/samba/@' \
-e '/path =/s@/usr/spool/samba@/var/spool/samba@' \
-i "${ED}"/etc/samba/smb.conf.default || die
# Install init script and conf.d file
newinitd "${CONFDIR}/samba4.initd-r1" samba
newconfd "${CONFDIR}/samba4.confd" samba
dotmpfiles "${FILESDIR}"/samba.conf
if ! use addc ; then
rm "${D}/$(systemd_get_systemunitdir)/samba.service" \
|| die
fi
# Preserve functionality for old gentoo-specific unit names
dosym nmb.service "$(systemd_get_systemunitdir)/nmbd.service"
dosym smb.service "$(systemd_get_systemunitdir)/smbd.service"
dosym winbind.service "$(systemd_get_systemunitdir)/winbindd.service"
use python && python_optimize
fi
if use pam && use winbind ; then
newpamd "${CONFDIR}/system-auth-winbind.pam" system-auth-winbind
# bugs #376853 and #590374
insinto /etc/security
doins examples/pam_winbind/pam_winbind.conf
fi
}
pkg_postinst() {
tmpfiles_process samba.conf
}

View File

@ -1,393 +0,0 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{11..13} )
PYTHON_REQ_USE="threads(+),xml(+)"
inherit python-single-r1 flag-o-matic waf-utils multilib-minimal linux-info systemd pam tmpfiles
DESCRIPTION="Samba Suite Version 4"
HOMEPAGE="https://samba.org/"
MY_PV="${PV/_rc/rc}"
MY_P="${PN}-${MY_PV}"
if [[ ${PV} == *_rc* ]]; then
SRC_URI="https://download.samba.org/pub/samba/rc/${MY_P}.tar.gz"
else
SRC_URI="https://download.samba.org/pub/samba/stable/${MY_P}.tar.gz"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
fi
S="${WORKDIR}/${MY_P}"
LICENSE="GPL-3"
SLOT="0/2.10.0"
IUSE="acl addc ads ceph client cluster cups debug fam glusterfs gpg"
IUSE+=" iprint json ldap llvm-libunwind lmdb pam profiling-data python quota"
IUSE+=" +regedit selinux snapper spotlight syslog system-heimdal +system-mitkrb5"
IUSE+=" systemd test unwind winbind zeroconf"
# ldap needs ads (bug #941578)
REQUIRED_USE="${PYTHON_REQUIRED_USE}
addc? ( json python !system-mitkrb5 winbind )
ads? ( acl ldap python winbind )
cluster? ( ads )
gpg? ( addc )
ldap? ( ads )
spotlight? ( json )
test? ( python )
!ads? ( !addc )
?? ( system-heimdal system-mitkrb5 )
"
# the test suite is messed, it uses system-installed samba
# bits instead of what was built, tests things disabled via use
# flags, and generally just fails to work in a way ebuilds could
# rely on in its current state
RESTRICT="test"
MULTILIB_WRAPPED_HEADERS=(
/usr/include/samba-4.0/policy.h
/usr/include/samba-4.0/dcerpc_server.h
/usr/include/samba-4.0/ctdb.h
/usr/include/samba-4.0/ctdb_client.h
/usr/include/samba-4.0/ctdb_protocol.h
/usr/include/samba-4.0/ctdb_private.h
/usr/include/samba-4.0/ctdb_typesafe_cb.h
/usr/include/samba-4.0/ctdb_version.h
)
TALLOC_VERSION="2.4.2"
TDB_VERSION="1.4.12"
TEVENT_VERSION="0.16.1"
COMMON_DEPEND="
>=app-arch/libarchive-3.1.2:=[${MULTILIB_USEDEP}]
dev-lang/perl:=
dev-libs/icu:=[${MULTILIB_USEDEP}]
dev-libs/libbsd[${MULTILIB_USEDEP}]
dev-libs/libtasn1:=[${MULTILIB_USEDEP}]
dev-libs/popt[${MULTILIB_USEDEP}]
dev-perl/Parse-Yapp
>=net-libs/gnutls-3.4.7:=[${MULTILIB_USEDEP}]
>=sys-fs/e2fsprogs-1.46.4-r51[${MULTILIB_USEDEP}]
!sys-libs/ldb
sys-libs/libcap[${MULTILIB_USEDEP}]
sys-libs/liburing:=[${MULTILIB_USEDEP}]
sys-libs/ncurses:=
sys-libs/readline:=
>=sys-libs/talloc-${TALLOC_VERSION}[${MULTILIB_USEDEP}]
>=sys-libs/tdb-${TDB_VERSION}[${MULTILIB_USEDEP}]
>=sys-libs/tevent-${TEVENT_VERSION}[${MULTILIB_USEDEP}]
virtual/zlib:=[${MULTILIB_USEDEP}]
virtual/libcrypt:=[${MULTILIB_USEDEP}]
virtual/libiconv
$(python_gen_cond_dep '
addc? (
dev-python/cryptography[${PYTHON_USEDEP}]
dev-python/dnspython:=[${PYTHON_USEDEP}]
dev-python/markdown[${PYTHON_USEDEP}]
net-dns/bind[gssapi]
)
ads? (
dev-python/cryptography[${PYTHON_USEDEP}]
dev-python/dnspython:=[${PYTHON_USEDEP}]
dev-python/markdown[${PYTHON_USEDEP}]
net-dns/bind[gssapi]
)
')
acl? ( virtual/acl )
ceph? ( sys-cluster/ceph )
cluster? ( net-libs/rpcsvc-proto )
cups? ( net-print/cups )
debug? ( dev-util/lttng-ust )
fam? ( virtual/fam )
gpg? ( app-crypt/gpgme:= )
json? ( dev-libs/jansson:= )
ldap? ( net-nds/openldap:=[${MULTILIB_USEDEP}] )
lmdb? ( >=dev-db/lmdb-0.9.16:=[${MULTILIB_USEDEP}] )
pam? ( sys-libs/pam )
python? (
sys-libs/talloc[python,${PYTHON_SINGLE_USEDEP}]
sys-libs/tdb[python,${PYTHON_SINGLE_USEDEP}]
sys-libs/tevent[python,${PYTHON_SINGLE_USEDEP}]
)
snapper? ( sys-apps/dbus )
system-heimdal? ( >=app-crypt/heimdal-1.5[-ssl(-),${MULTILIB_USEDEP}] )
system-mitkrb5? ( >=app-crypt/mit-krb5-1.19[${MULTILIB_USEDEP}] )
!system-heimdal? ( !system-mitkrb5? ( sys-apps/keyutils[${MULTILIB_USEDEP}] ) )
systemd? ( sys-apps/systemd:= )
unwind? (
llvm-libunwind? ( llvm-runtimes/libunwind:= )
!llvm-libunwind? ( sys-libs/libunwind:= )
)
zeroconf? ( net-dns/avahi[dbus] )
"
DEPEND="${COMMON_DEPEND}
dev-perl/JSON
net-libs/libtirpc[${MULTILIB_USEDEP}]
net-libs/rpcsvc-proto
spotlight? ( dev-libs/glib )
test? (
>=dev-util/cmocka-1.1.3[${MULTILIB_USEDEP}]
$(python_gen_cond_dep "dev-python/python-subunit[\${PYTHON_USEDEP},${MULTILIB_USEDEP}]" )
!system-mitkrb5? (
>=net-dns/resolv_wrapper-1.1.4
>=net-libs/socket_wrapper-1.1.9
>=sys-libs/nss_wrapper-1.1.3
>=sys-libs/uid_wrapper-1.2.1
)
)"
RDEPEND="${COMMON_DEPEND}
client? ( net-fs/cifs-utils[ads?] )
python? ( ${PYTHON_DEPS} )
selinux? ( sec-policy/selinux-samba )
"
BDEPEND="${PYTHON_DEPS}
app-text/docbook-xsl-stylesheets
dev-libs/libxslt
virtual/pkgconfig
"
PATCHES=(
"${FILESDIR}"/${PN}-4.18.4-pam.patch
"${FILESDIR}"/ldb-2.5.2-skip-wav-tevent-check.patch
)
CONFDIR="${FILESDIR}/4.4"
WAF_BINARY="${S}/buildtools/bin/waf"
SHAREDMODS=""
pkg_setup() {
# Package fails to build with distcc
export DISTCC_DISABLE=1
export PYTHONHASHSEED=1
python-single-r1_pkg_setup
SHAREDMODS="$(usev !snapper '!')vfs_snapper"
if use cluster ; then
SHAREDMODS+=",idmap_rid,idmap_tdb2,idmap_ad"
elif use ads ; then
SHAREDMODS+=",idmap_ad"
fi
}
check_samba_dep_versions() {
actual_talloc_version=$(sed -En '/^VERSION =/{s/[^0-9.]//gp}' lib/talloc/wscript || die)
if [[ ${actual_talloc_version} != ${TALLOC_VERSION} ]] ; then
eerror "Source talloc version: ${TALLOC_VERSION}"
eerror "Ebuild talloc version: ${actual_talloc_version}"
die "Ebuild needs to fix TALLOC_VERSION!"
fi
actual_tdb_version=$(sed -En '/^VERSION =/{s/[^0-9.]//gp}' lib/tdb/wscript || die)
if [[ ${actual_tdb_version} != ${TDB_VERSION} ]] ; then
eerror "Source tdb version: ${TDB_VERSION}"
eerror "Ebuild tdb version: ${actual_tdb_version}"
die "Ebuild needs to fix TDB_VERSION!"
fi
actual_tevent_version=$(sed -En '/^VERSION =/{s/[^0-9.]//gp}' lib/tevent/wscript || die)
if [[ ${actual_tevent_version} != ${TEVENT_VERSION} ]] ; then
eerror "Source tevent version: ${TEVENT_VERSION}"
eerror "Ebuild tevent version: ${actual_tevent_version}"
die "Ebuild needs to fix TEVENT_VERSION!"
fi
}
src_prepare() {
default
check_samba_dep_versions
# Unbundle dnspython
sed -i -e '/"dns.resolver":/d' "${S}"/third_party/wscript || die
# Unbundle iso8601 unless tests are enabled
if ! use test ; then
sed -i -e '/"iso8601":/d' "${S}"/third_party/wscript || die
fi
# Ugly hackaround for bug #592502
#cp /usr/include/tevent_internal.h "${S}"/lib/tevent/ || die
# bug #943942
append-cflags -std=gnu17
# WAF
multilib_copy_sources
}
multilib_src_configure() {
# When specifying libs for samba build you must append NONE to the end to
# stop it automatically including things
local bundled_libs="NONE"
if ! use system-heimdal && ! use system-mitkrb5 ; then
bundled_libs="heimbase,heimntlm,hdb,kdc,krb5,wind,gssapi,hcrypto,hx509,roken,asn1,com_err,NONE"
fi
# We "use" bundled cmocka when we're not running tests as we're
# not using it anyway. Means we avoid making users install it for
# no reason. bug #802531
if ! use test ; then
bundled_libs="cmocka,${bundled_libs}"
fi
# bug #874633
if use llvm-libunwind ; then
mkdir -p "${T}"/${ABI}/pkgconfig || die
local -x PKG_CONFIG_PATH="${T}/${ABI}/pkgconfig:${PKG_CONFIG_PATH}"
cat <<-EOF > "${T}"/${ABI}/pkgconfig/libunwind-generic.pc || die
exec_prefix=\${prefix}
libdir=/usr/$(get_libdir)
includedir=\${prefix}/include
Name: libunwind-generic
Description: libunwind generic library
Version: 1.70
Libs: -L\${libdir} -lunwind
Cflags: -I\${includedir}
EOF
fi
local myconf=(
--enable-fhs
--sysconfdir="${EPREFIX}/etc"
--localstatedir="${EPREFIX}/var"
--with-modulesdir="${EPREFIX}/usr/$(get_libdir)/samba"
--with-piddir="${EPREFIX}/run/${PN}"
--bundled-libraries="${bundled_libs}"
--builtin-libraries=NONE
--disable-rpath
--disable-rpath-install
--nopyc
--nopyo
--without-winexe
$(multilib_native_use_with acl acl-support)
$(multilib_native_usex addc '' '--without-ad-dc')
$(multilib_native_use_enable ceph cephfs)
$(multilib_native_use_with cluster cluster-support)
$(multilib_native_use_enable cups)
--without-dmapi
$(multilib_native_use_with fam)
$(multilib_native_use_enable glusterfs)
$(multilib_native_use_with gpg gpgme)
$(multilib_native_use_with json)
$(multilib_native_use_enable iprint)
$(multilib_native_use_with pam)
$(multilib_native_usex pam "--with-pammodulesdir=${EPREFIX}/$(get_libdir)/security" '')
$(multilib_native_use_with quota quotas)
$(multilib_native_use_with regedit)
$(multilib_native_use_enable spotlight)
$(multilib_native_use_with syslog)
$(multilib_native_use_with systemd)
--systemd-install-services
--with-systemddir="$(systemd_get_systemunitdir)"
$(multilib_native_use_with unwind libunwind)
$(multilib_native_use_with winbind)
$(multilib_native_usex python '' '--disable-python')
$(multilib_native_use_enable zeroconf avahi)
$(multilib_native_usex test '--enable-selftest' '')
$(usev system-mitkrb5 "--with-system-mitkrb5 ${ESYSROOT}/usr $(multilib_native_usex addc --with-experimental-mit-ad-dc '')")
$(use_with ads)
$(use_with debug lttng)
$(use_with ldap)
$(use_with profiling-data)
--private-libraries='!ldb'
$(usex lmdb '' --without-ldb-lmdb)
# bug #683148
--jobs 1
)
if multilib_is_native_abi ; then
myconf+=( --with-shared-modules=${SHAREDMODS} )
else
myconf+=( --with-shared-modules=DEFAULT,!vfs_snapper )
fi
append-ldflags $(test-flags-CCLD -Wl,--undefined-version) # bug 914898
append-cppflags "-I${ESYSROOT}/usr/include/et"
waf-utils_src_configure ${myconf[@]}
}
multilib_src_compile() {
waf-utils_src_compile
}
multilib_src_test() {
if multilib_is_native_abi ; then
"${WAF_BINARY}" test || die "Test failed"
fi
}
multilib_src_install() {
waf-utils_src_install
# Make all .so files executable
find "${ED}" -type f -name "*.so" -exec chmod +x {} + || die
# smbspool_krb5_wrapper must only be accessible to root, bug #880739
find "${ED}" -type f -name "smbspool_krb5_wrapper" -exec chmod go-rwx {} + || die
# Remove empty runtime dirs created by build system (bug #892341)
find "${ED}"/{run,var} -type d -empty -delete || die
if multilib_is_native_abi ; then
# Install ldap schema for server (bug #491002)
if use ldap ; then
insinto /etc/openldap/schema
doins examples/LDAP/samba.schema
fi
# Create symlink for cups (bug #552310)
if use cups ; then
dosym ../../../bin/smbspool \
/usr/libexec/cups/backend/smb
fi
# Install example config file
insinto /etc/samba
doins examples/smb.conf.default
# Fix paths in example file (bug #603964)
sed \
-e '/log file =/s@/usr/local/samba/var/@/var/log/samba/@' \
-e '/include =/s@/usr/local/samba/lib/@/etc/samba/@' \
-e '/path =/s@/usr/local/samba/lib/@/var/lib/samba/@' \
-e '/path =/s@/usr/local/samba/@/var/lib/samba/@' \
-e '/path =/s@/usr/spool/samba@/var/spool/samba@' \
-i "${ED}"/etc/samba/smb.conf.default || die
# Install init script and conf.d file
newinitd "${CONFDIR}/samba4.initd-r1" samba
newconfd "${CONFDIR}/samba4.confd" samba
dotmpfiles "${FILESDIR}"/samba.conf
if ! use addc ; then
rm "${D}/$(systemd_get_systemunitdir)/samba.service" \
|| die
fi
# Preserve functionality for old gentoo-specific unit names
dosym nmb.service "$(systemd_get_systemunitdir)/nmbd.service"
dosym smb.service "$(systemd_get_systemunitdir)/smbd.service"
dosym winbind.service "$(systemd_get_systemunitdir)/winbindd.service"
use python && python_optimize
fi
if use pam && use winbind ; then
newpamd "${CONFDIR}/system-auth-winbind.pam" system-auth-winbind
# bugs #376853 and #590374
insinto /etc/security
doins examples/pam_winbind/pam_winbind.conf
fi
}
pkg_postinst() {
tmpfiles_process samba.conf
}

View File

@ -1,389 +0,0 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{11..13} )
PYTHON_REQ_USE="threads(+),xml(+)"
inherit python-single-r1 flag-o-matic waf-utils multilib-minimal linux-info systemd pam tmpfiles
DESCRIPTION="Samba Suite Version 4"
HOMEPAGE="https://samba.org/"
MY_PV="${PV/_rc/rc}"
MY_P="${PN}-${MY_PV}"
if [[ ${PV} == *_rc* ]]; then
SRC_URI="https://download.samba.org/pub/samba/rc/${MY_P}.tar.gz"
else
SRC_URI="https://download.samba.org/pub/samba/stable/${MY_P}.tar.gz"
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~sparc x86"
fi
S="${WORKDIR}/${MY_P}"
LICENSE="GPL-3"
SLOT="0/2.10.0"
IUSE="acl addc ads ceph client cluster cups debug fam glusterfs gpg"
IUSE+=" iprint json ldap llvm-libunwind lmdb pam profiling-data python quota"
IUSE+=" +regedit selinux snapper spotlight syslog system-heimdal +system-mitkrb5"
IUSE+=" systemd test unwind winbind zeroconf"
# ldap needs ads (bug #941578)
REQUIRED_USE="${PYTHON_REQUIRED_USE}
addc? ( json python !system-mitkrb5 winbind )
ads? ( acl ldap python winbind )
cluster? ( ads )
gpg? ( addc )
ldap? ( ads )
spotlight? ( json )
test? ( python )
!ads? ( !addc )
?? ( system-heimdal system-mitkrb5 )
"
# the test suite is messed, it uses system-installed samba
# bits instead of what was built, tests things disabled via use
# flags, and generally just fails to work in a way ebuilds could
# rely on in its current state
RESTRICT="test"
MULTILIB_WRAPPED_HEADERS=(
/usr/include/samba-4.0/policy.h
/usr/include/samba-4.0/dcerpc_server.h
/usr/include/samba-4.0/ctdb.h
/usr/include/samba-4.0/ctdb_client.h
/usr/include/samba-4.0/ctdb_protocol.h
/usr/include/samba-4.0/ctdb_private.h
/usr/include/samba-4.0/ctdb_typesafe_cb.h
/usr/include/samba-4.0/ctdb_version.h
)
TALLOC_VERSION="2.4.3"
TDB_VERSION="1.4.13"
TEVENT_VERSION="0.16.2"
COMMON_DEPEND="
>=app-arch/libarchive-3.1.2:=[${MULTILIB_USEDEP}]
dev-lang/perl:=
dev-libs/icu:=[${MULTILIB_USEDEP}]
dev-libs/libbsd[${MULTILIB_USEDEP}]
dev-libs/libtasn1:=[${MULTILIB_USEDEP}]
dev-libs/popt[${MULTILIB_USEDEP}]
dev-perl/Parse-Yapp
>=net-libs/gnutls-3.4.7:=[${MULTILIB_USEDEP}]
>=sys-fs/e2fsprogs-1.46.4-r51[${MULTILIB_USEDEP}]
!sys-libs/ldb
sys-libs/libcap[${MULTILIB_USEDEP}]
sys-libs/liburing:=[${MULTILIB_USEDEP}]
sys-libs/ncurses:=
sys-libs/readline:=
>=sys-libs/talloc-${TALLOC_VERSION}[${MULTILIB_USEDEP}]
>=sys-libs/tdb-${TDB_VERSION}[${MULTILIB_USEDEP}]
>=sys-libs/tevent-${TEVENT_VERSION}[${MULTILIB_USEDEP}]
virtual/zlib:=[${MULTILIB_USEDEP}]
virtual/libcrypt:=[${MULTILIB_USEDEP}]
virtual/libiconv
$(python_gen_cond_dep '
addc? (
dev-python/dnspython:=[${PYTHON_USEDEP}]
dev-python/markdown[${PYTHON_USEDEP}]
)
ads? (
dev-python/dnspython:=[${PYTHON_USEDEP}]
net-dns/bind[gssapi]
)
')
acl? ( virtual/acl )
ceph? ( sys-cluster/ceph )
cluster? ( net-libs/rpcsvc-proto )
cups? ( net-print/cups )
debug? ( dev-util/lttng-ust )
fam? ( virtual/fam )
gpg? ( app-crypt/gpgme:= )
json? ( dev-libs/jansson:= )
ldap? ( net-nds/openldap:=[${MULTILIB_USEDEP}] )
lmdb? ( >=dev-db/lmdb-0.9.16:=[${MULTILIB_USEDEP}] )
pam? ( sys-libs/pam )
python? (
sys-libs/talloc[python,${PYTHON_SINGLE_USEDEP}]
sys-libs/tdb[python,${PYTHON_SINGLE_USEDEP}]
sys-libs/tevent[python,${PYTHON_SINGLE_USEDEP}]
)
snapper? ( sys-apps/dbus )
system-heimdal? ( >=app-crypt/heimdal-1.5[-ssl(-),${MULTILIB_USEDEP}] )
system-mitkrb5? ( >=app-crypt/mit-krb5-1.19[${MULTILIB_USEDEP}] )
!system-heimdal? ( !system-mitkrb5? ( sys-apps/keyutils[${MULTILIB_USEDEP}] ) )
systemd? ( sys-apps/systemd:= )
unwind? (
llvm-libunwind? ( llvm-runtimes/libunwind:= )
!llvm-libunwind? ( sys-libs/libunwind:= )
)
zeroconf? ( net-dns/avahi[dbus] )
"
DEPEND="${COMMON_DEPEND}
dev-perl/JSON
net-libs/libtirpc[${MULTILIB_USEDEP}]
net-libs/rpcsvc-proto
spotlight? ( dev-libs/glib )
test? (
>=dev-util/cmocka-1.1.3[${MULTILIB_USEDEP}]
$(python_gen_cond_dep "dev-python/python-subunit[\${PYTHON_USEDEP},${MULTILIB_USEDEP}]" )
!system-mitkrb5? (
>=net-dns/resolv_wrapper-1.1.4
>=net-libs/socket_wrapper-1.1.9
>=sys-libs/nss_wrapper-1.1.3
>=sys-libs/uid_wrapper-1.2.1
)
)"
RDEPEND="${COMMON_DEPEND}
client? ( net-fs/cifs-utils[ads?] )
python? ( ${PYTHON_DEPS} )
selinux? ( sec-policy/selinux-samba )
"
BDEPEND="${PYTHON_DEPS}
app-text/docbook-xsl-stylesheets
dev-libs/libxslt
virtual/pkgconfig
"
PATCHES=(
"${FILESDIR}"/${PN}-4.18.4-pam.patch
"${FILESDIR}"/ldb-2.5.2-skip-wav-tevent-check.patch
)
CONFDIR="${FILESDIR}/4.4"
WAF_BINARY="${S}/buildtools/bin/waf"
SHAREDMODS=""
pkg_setup() {
# Package fails to build with distcc
export DISTCC_DISABLE=1
export PYTHONHASHSEED=1
python-single-r1_pkg_setup
SHAREDMODS="$(usev !snapper '!')vfs_snapper"
if use cluster ; then
SHAREDMODS+=",idmap_rid,idmap_tdb2,idmap_ad"
elif use ads ; then
SHAREDMODS+=",idmap_ad"
fi
}
check_samba_dep_versions() {
actual_talloc_version=$(sed -En '/^VERSION =/{s/[^0-9.]//gp}' lib/talloc/wscript || die)
if [[ ${actual_talloc_version} != ${TALLOC_VERSION} ]] ; then
eerror "Source talloc version: ${TALLOC_VERSION}"
eerror "Ebuild talloc version: ${actual_talloc_version}"
die "Ebuild needs to fix TALLOC_VERSION!"
fi
actual_tdb_version=$(sed -En '/^VERSION =/{s/[^0-9.]//gp}' lib/tdb/wscript || die)
if [[ ${actual_tdb_version} != ${TDB_VERSION} ]] ; then
eerror "Source tdb version: ${TDB_VERSION}"
eerror "Ebuild tdb version: ${actual_tdb_version}"
die "Ebuild needs to fix TDB_VERSION!"
fi
actual_tevent_version=$(sed -En '/^VERSION =/{s/[^0-9.]//gp}' lib/tevent/wscript || die)
if [[ ${actual_tevent_version} != ${TEVENT_VERSION} ]] ; then
eerror "Source tevent version: ${TEVENT_VERSION}"
eerror "Ebuild tevent version: ${actual_tevent_version}"
die "Ebuild needs to fix TEVENT_VERSION!"
fi
}
src_prepare() {
default
check_samba_dep_versions
# Unbundle dnspython
sed -i -e '/"dns.resolver":/d' "${S}"/third_party/wscript || die
# Unbundle iso8601 unless tests are enabled
if ! use test ; then
sed -i -e '/"iso8601":/d' "${S}"/third_party/wscript || die
fi
# Ugly hackaround for bug #592502
#cp /usr/include/tevent_internal.h "${S}"/lib/tevent/ || die
# bug #943942
append-cflags -std=gnu17
# WAF
multilib_copy_sources
}
multilib_src_configure() {
# When specifying libs for samba build you must append NONE to the end to
# stop it automatically including things
local bundled_libs="NONE"
if ! use system-heimdal && ! use system-mitkrb5 ; then
bundled_libs="heimbase,heimntlm,hdb,kdc,krb5,wind,gssapi,hcrypto,hx509,roken,asn1,com_err,NONE"
fi
# We "use" bundled cmocka when we're not running tests as we're
# not using it anyway. Means we avoid making users install it for
# no reason. bug #802531
if ! use test ; then
bundled_libs="cmocka,${bundled_libs}"
fi
# bug #874633
if use llvm-libunwind ; then
mkdir -p "${T}"/${ABI}/pkgconfig || die
local -x PKG_CONFIG_PATH="${T}/${ABI}/pkgconfig:${PKG_CONFIG_PATH}"
cat <<-EOF > "${T}"/${ABI}/pkgconfig/libunwind-generic.pc || die
exec_prefix=\${prefix}
libdir=/usr/$(get_libdir)
includedir=\${prefix}/include
Name: libunwind-generic
Description: libunwind generic library
Version: 1.70
Libs: -L\${libdir} -lunwind
Cflags: -I\${includedir}
EOF
fi
local myconf=(
--enable-fhs
--sysconfdir="${EPREFIX}/etc"
--localstatedir="${EPREFIX}/var"
--with-modulesdir="${EPREFIX}/usr/$(get_libdir)/samba"
--with-piddir="${EPREFIX}/run/${PN}"
--bundled-libraries="${bundled_libs}"
--builtin-libraries=NONE
--disable-rpath
--disable-rpath-install
--nopyc
--nopyo
--without-winexe
$(multilib_native_use_with acl acl-support)
$(multilib_native_usex addc '' '--without-ad-dc')
$(multilib_native_use_enable ceph cephfs)
$(multilib_native_use_with cluster cluster-support)
$(multilib_native_use_enable cups)
--without-dmapi
$(multilib_native_use_with fam)
$(multilib_native_use_enable glusterfs)
$(multilib_native_use_with gpg gpgme)
$(multilib_native_use_with json)
$(multilib_native_use_enable iprint)
$(multilib_native_use_with pam)
$(multilib_native_usex pam "--with-pammodulesdir=${EPREFIX}/$(get_libdir)/security" '')
$(multilib_native_use_with quota quotas)
$(multilib_native_use_with regedit)
$(multilib_native_use_enable spotlight)
$(multilib_native_use_with syslog)
$(multilib_native_use_with systemd)
--systemd-install-services
--with-systemddir="$(systemd_get_systemunitdir)"
$(multilib_native_use_with unwind libunwind)
$(multilib_native_use_with winbind)
$(multilib_native_usex python '' '--disable-python')
$(multilib_native_use_enable zeroconf avahi)
$(multilib_native_usex test '--enable-selftest' '')
$(usev system-mitkrb5 "--with-system-mitkrb5 ${ESYSROOT}/usr $(multilib_native_usex addc --with-experimental-mit-ad-dc '')")
$(use_with ads)
$(use_with debug lttng)
$(use_with ldap)
$(use_with profiling-data)
--private-libraries='!ldb'
$(usex lmdb '' --without-ldb-lmdb)
# bug #683148
--jobs 1
)
if multilib_is_native_abi ; then
myconf+=( --with-shared-modules=${SHAREDMODS} )
else
myconf+=( --with-shared-modules=DEFAULT,!vfs_snapper )
fi
append-ldflags $(test-flags-CCLD -Wl,--undefined-version) # bug 914898
append-cppflags "-I${ESYSROOT}/usr/include/et"
waf-utils_src_configure ${myconf[@]}
}
multilib_src_compile() {
waf-utils_src_compile
}
multilib_src_test() {
if multilib_is_native_abi ; then
"${WAF_BINARY}" test || die "Test failed"
fi
}
multilib_src_install() {
waf-utils_src_install
# Make all .so files executable
find "${ED}" -type f -name "*.so" -exec chmod +x {} + || die
# smbspool_krb5_wrapper must only be accessible to root, bug #880739
find "${ED}" -type f -name "smbspool_krb5_wrapper" -exec chmod go-rwx {} + || die
# Remove empty runtime dirs created by build system (bug #892341)
find "${ED}"/{run,var} -type d -empty -delete || die
if multilib_is_native_abi ; then
# Install ldap schema for server (bug #491002)
if use ldap ; then
insinto /etc/openldap/schema
doins examples/LDAP/samba.schema
fi
# Create symlink for cups (bug #552310)
if use cups ; then
dosym ../../../bin/smbspool \
/usr/libexec/cups/backend/smb
fi
# Install example config file
insinto /etc/samba
doins examples/smb.conf.default
# Fix paths in example file (bug #603964)
sed \
-e '/log file =/s@/usr/local/samba/var/@/var/log/samba/@' \
-e '/include =/s@/usr/local/samba/lib/@/etc/samba/@' \
-e '/path =/s@/usr/local/samba/lib/@/var/lib/samba/@' \
-e '/path =/s@/usr/local/samba/@/var/lib/samba/@' \
-e '/path =/s@/usr/spool/samba@/var/spool/samba@' \
-i "${ED}"/etc/samba/smb.conf.default || die
# Install init script and conf.d file
newinitd "${CONFDIR}/samba4.initd-r1" samba
newconfd "${CONFDIR}/samba4.confd" samba
dotmpfiles "${FILESDIR}"/samba.conf
if ! use addc ; then
rm "${D}/$(systemd_get_systemunitdir)/samba.service" \
|| die
fi
# Preserve functionality for old gentoo-specific unit names
dosym nmb.service "$(systemd_get_systemunitdir)/nmbd.service"
dosym smb.service "$(systemd_get_systemunitdir)/smbd.service"
dosym winbind.service "$(systemd_get_systemunitdir)/winbindd.service"
use python && python_optimize
fi
if use pam && use winbind ; then
newpamd "${CONFDIR}/system-auth-winbind.pam" system-auth-winbind
# bugs #376853 and #590374
insinto /etc/security
doins examples/pam_winbind/pam_winbind.conf
fi
}
pkg_postinst() {
tmpfiles_process samba.conf
}

View File

@ -1,389 +0,0 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{11..13} )
PYTHON_REQ_USE="threads(+),xml(+)"
inherit python-single-r1 flag-o-matic waf-utils multilib-minimal linux-info systemd pam tmpfiles
DESCRIPTION="Samba Suite Version 4"
HOMEPAGE="https://samba.org/"
MY_PV="${PV/_rc/rc}"
MY_P="${PN}-${MY_PV}"
if [[ ${PV} == *_rc* ]]; then
SRC_URI="https://download.samba.org/pub/samba/rc/${MY_P}.tar.gz"
else
SRC_URI="https://download.samba.org/pub/samba/stable/${MY_P}.tar.gz"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
fi
S="${WORKDIR}/${MY_P}"
LICENSE="GPL-3"
SLOT="0/2.10.0"
IUSE="acl addc ads ceph client cluster cups debug fam glusterfs gpg"
IUSE+=" iprint json ldap llvm-libunwind lmdb pam profiling-data python quota"
IUSE+=" +regedit selinux snapper spotlight syslog system-heimdal +system-mitkrb5"
IUSE+=" systemd test unwind winbind zeroconf"
# ldap needs ads (bug #941578)
REQUIRED_USE="${PYTHON_REQUIRED_USE}
addc? ( json python !system-mitkrb5 winbind )
ads? ( acl ldap python winbind )
cluster? ( ads )
gpg? ( addc )
ldap? ( ads )
spotlight? ( json )
test? ( python )
!ads? ( !addc )
?? ( system-heimdal system-mitkrb5 )
"
# the test suite is messed, it uses system-installed samba
# bits instead of what was built, tests things disabled via use
# flags, and generally just fails to work in a way ebuilds could
# rely on in its current state
RESTRICT="test"
MULTILIB_WRAPPED_HEADERS=(
/usr/include/samba-4.0/policy.h
/usr/include/samba-4.0/dcerpc_server.h
/usr/include/samba-4.0/ctdb.h
/usr/include/samba-4.0/ctdb_client.h
/usr/include/samba-4.0/ctdb_protocol.h
/usr/include/samba-4.0/ctdb_private.h
/usr/include/samba-4.0/ctdb_typesafe_cb.h
/usr/include/samba-4.0/ctdb_version.h
)
TALLOC_VERSION="2.4.3"
TDB_VERSION="1.4.13"
TEVENT_VERSION="0.16.2"
COMMON_DEPEND="
>=app-arch/libarchive-3.1.2:=[${MULTILIB_USEDEP}]
dev-lang/perl:=
dev-libs/icu:=[${MULTILIB_USEDEP}]
dev-libs/libbsd[${MULTILIB_USEDEP}]
dev-libs/libtasn1:=[${MULTILIB_USEDEP}]
dev-libs/popt[${MULTILIB_USEDEP}]
dev-perl/Parse-Yapp
>=net-libs/gnutls-3.4.7:=[${MULTILIB_USEDEP}]
>=sys-fs/e2fsprogs-1.46.4-r51[${MULTILIB_USEDEP}]
!sys-libs/ldb
sys-libs/libcap[${MULTILIB_USEDEP}]
sys-libs/liburing:=[${MULTILIB_USEDEP}]
sys-libs/ncurses:=
sys-libs/readline:=
>=sys-libs/talloc-${TALLOC_VERSION}[${MULTILIB_USEDEP}]
>=sys-libs/tdb-${TDB_VERSION}[${MULTILIB_USEDEP}]
>=sys-libs/tevent-${TEVENT_VERSION}[${MULTILIB_USEDEP}]
virtual/zlib:=[${MULTILIB_USEDEP}]
virtual/libcrypt:=[${MULTILIB_USEDEP}]
virtual/libiconv
$(python_gen_cond_dep '
addc? (
dev-python/dnspython:=[${PYTHON_USEDEP}]
dev-python/markdown[${PYTHON_USEDEP}]
)
ads? (
dev-python/dnspython:=[${PYTHON_USEDEP}]
net-dns/bind[gssapi]
)
')
acl? ( virtual/acl )
ceph? ( sys-cluster/ceph )
cluster? ( net-libs/rpcsvc-proto )
cups? ( net-print/cups )
debug? ( dev-util/lttng-ust )
fam? ( virtual/fam )
gpg? ( app-crypt/gpgme:= )
json? ( dev-libs/jansson:= )
ldap? ( net-nds/openldap:=[${MULTILIB_USEDEP}] )
lmdb? ( >=dev-db/lmdb-0.9.16:=[${MULTILIB_USEDEP}] )
pam? ( sys-libs/pam )
python? (
sys-libs/talloc[python,${PYTHON_SINGLE_USEDEP}]
sys-libs/tdb[python,${PYTHON_SINGLE_USEDEP}]
sys-libs/tevent[python,${PYTHON_SINGLE_USEDEP}]
)
snapper? ( sys-apps/dbus )
system-heimdal? ( >=app-crypt/heimdal-1.5[-ssl(-),${MULTILIB_USEDEP}] )
system-mitkrb5? ( >=app-crypt/mit-krb5-1.19[${MULTILIB_USEDEP}] )
!system-heimdal? ( !system-mitkrb5? ( sys-apps/keyutils[${MULTILIB_USEDEP}] ) )
systemd? ( sys-apps/systemd:= )
unwind? (
llvm-libunwind? ( llvm-runtimes/libunwind:= )
!llvm-libunwind? ( sys-libs/libunwind:= )
)
zeroconf? ( net-dns/avahi[dbus] )
"
DEPEND="${COMMON_DEPEND}
dev-perl/JSON
net-libs/libtirpc[${MULTILIB_USEDEP}]
net-libs/rpcsvc-proto
spotlight? ( dev-libs/glib )
test? (
>=dev-util/cmocka-1.1.3[${MULTILIB_USEDEP}]
$(python_gen_cond_dep "dev-python/python-subunit[\${PYTHON_USEDEP},${MULTILIB_USEDEP}]" )
!system-mitkrb5? (
>=net-dns/resolv_wrapper-1.1.4
>=net-libs/socket_wrapper-1.1.9
>=sys-libs/nss_wrapper-1.1.3
>=sys-libs/uid_wrapper-1.2.1
)
)"
RDEPEND="${COMMON_DEPEND}
client? ( net-fs/cifs-utils[ads?] )
python? ( ${PYTHON_DEPS} )
selinux? ( sec-policy/selinux-samba )
"
BDEPEND="${PYTHON_DEPS}
app-text/docbook-xsl-stylesheets
dev-libs/libxslt
virtual/pkgconfig
"
PATCHES=(
"${FILESDIR}"/${PN}-4.18.4-pam.patch
"${FILESDIR}"/ldb-2.5.2-skip-wav-tevent-check.patch
)
CONFDIR="${FILESDIR}/4.4"
WAF_BINARY="${S}/buildtools/bin/waf"
SHAREDMODS=""
pkg_setup() {
# Package fails to build with distcc
export DISTCC_DISABLE=1
export PYTHONHASHSEED=1
python-single-r1_pkg_setup
SHAREDMODS="$(usev !snapper '!')vfs_snapper"
if use cluster ; then
SHAREDMODS+=",idmap_rid,idmap_tdb2,idmap_ad"
elif use ads ; then
SHAREDMODS+=",idmap_ad"
fi
}
check_samba_dep_versions() {
actual_talloc_version=$(sed -En '/^VERSION =/{s/[^0-9.]//gp}' lib/talloc/wscript || die)
if [[ ${actual_talloc_version} != ${TALLOC_VERSION} ]] ; then
eerror "Source talloc version: ${TALLOC_VERSION}"
eerror "Ebuild talloc version: ${actual_talloc_version}"
die "Ebuild needs to fix TALLOC_VERSION!"
fi
actual_tdb_version=$(sed -En '/^VERSION =/{s/[^0-9.]//gp}' lib/tdb/wscript || die)
if [[ ${actual_tdb_version} != ${TDB_VERSION} ]] ; then
eerror "Source tdb version: ${TDB_VERSION}"
eerror "Ebuild tdb version: ${actual_tdb_version}"
die "Ebuild needs to fix TDB_VERSION!"
fi
actual_tevent_version=$(sed -En '/^VERSION =/{s/[^0-9.]//gp}' lib/tevent/wscript || die)
if [[ ${actual_tevent_version} != ${TEVENT_VERSION} ]] ; then
eerror "Source tevent version: ${TEVENT_VERSION}"
eerror "Ebuild tevent version: ${actual_tevent_version}"
die "Ebuild needs to fix TEVENT_VERSION!"
fi
}
src_prepare() {
default
check_samba_dep_versions
# Unbundle dnspython
sed -i -e '/"dns.resolver":/d' "${S}"/third_party/wscript || die
# Unbundle iso8601 unless tests are enabled
if ! use test ; then
sed -i -e '/"iso8601":/d' "${S}"/third_party/wscript || die
fi
# Ugly hackaround for bug #592502
#cp /usr/include/tevent_internal.h "${S}"/lib/tevent/ || die
# bug #943942
append-cflags -std=gnu17
# WAF
multilib_copy_sources
}
multilib_src_configure() {
# When specifying libs for samba build you must append NONE to the end to
# stop it automatically including things
local bundled_libs="NONE"
if ! use system-heimdal && ! use system-mitkrb5 ; then
bundled_libs="heimbase,heimntlm,hdb,kdc,krb5,wind,gssapi,hcrypto,hx509,roken,asn1,com_err,NONE"
fi
# We "use" bundled cmocka when we're not running tests as we're
# not using it anyway. Means we avoid making users install it for
# no reason. bug #802531
if ! use test ; then
bundled_libs="cmocka,${bundled_libs}"
fi
# bug #874633
if use llvm-libunwind ; then
mkdir -p "${T}"/${ABI}/pkgconfig || die
local -x PKG_CONFIG_PATH="${T}/${ABI}/pkgconfig:${PKG_CONFIG_PATH}"
cat <<-EOF > "${T}"/${ABI}/pkgconfig/libunwind-generic.pc || die
exec_prefix=\${prefix}
libdir=/usr/$(get_libdir)
includedir=\${prefix}/include
Name: libunwind-generic
Description: libunwind generic library
Version: 1.70
Libs: -L\${libdir} -lunwind
Cflags: -I\${includedir}
EOF
fi
local myconf=(
--enable-fhs
--sysconfdir="${EPREFIX}/etc"
--localstatedir="${EPREFIX}/var"
--with-modulesdir="${EPREFIX}/usr/$(get_libdir)/samba"
--with-piddir="${EPREFIX}/run/${PN}"
--bundled-libraries="${bundled_libs}"
--builtin-libraries=NONE
--disable-rpath
--disable-rpath-install
--nopyc
--nopyo
--without-winexe
$(multilib_native_use_with acl acl-support)
$(multilib_native_usex addc '' '--without-ad-dc')
$(multilib_native_use_enable ceph cephfs)
$(multilib_native_use_with cluster cluster-support)
$(multilib_native_use_enable cups)
--without-dmapi
$(multilib_native_use_with fam)
$(multilib_native_use_enable glusterfs)
$(multilib_native_use_with gpg gpgme)
$(multilib_native_use_with json)
$(multilib_native_use_enable iprint)
$(multilib_native_use_with pam)
$(multilib_native_usex pam "--with-pammodulesdir=${EPREFIX}/$(get_libdir)/security" '')
$(multilib_native_use_with quota quotas)
$(multilib_native_use_with regedit)
$(multilib_native_use_enable spotlight)
$(multilib_native_use_with syslog)
$(multilib_native_use_with systemd)
--systemd-install-services
--with-systemddir="$(systemd_get_systemunitdir)"
$(multilib_native_use_with unwind libunwind)
$(multilib_native_use_with winbind)
$(multilib_native_usex python '' '--disable-python')
$(multilib_native_use_enable zeroconf avahi)
$(multilib_native_usex test '--enable-selftest' '')
$(usev system-mitkrb5 "--with-system-mitkrb5 ${ESYSROOT}/usr $(multilib_native_usex addc --with-experimental-mit-ad-dc '')")
$(use_with ads)
$(use_with debug lttng)
$(use_with ldap)
$(use_with profiling-data)
--private-libraries='!ldb'
$(usex lmdb '' --without-ldb-lmdb)
# bug #683148
--jobs 1
)
if multilib_is_native_abi ; then
myconf+=( --with-shared-modules=${SHAREDMODS} )
else
myconf+=( --with-shared-modules=DEFAULT,!vfs_snapper )
fi
append-ldflags $(test-flags-CCLD -Wl,--undefined-version) # bug 914898
append-cppflags "-I${ESYSROOT}/usr/include/et"
waf-utils_src_configure ${myconf[@]}
}
multilib_src_compile() {
waf-utils_src_compile
}
multilib_src_test() {
if multilib_is_native_abi ; then
"${WAF_BINARY}" test || die "Test failed"
fi
}
multilib_src_install() {
waf-utils_src_install
# Make all .so files executable
find "${ED}" -type f -name "*.so" -exec chmod +x {} + || die
# smbspool_krb5_wrapper must only be accessible to root, bug #880739
find "${ED}" -type f -name "smbspool_krb5_wrapper" -exec chmod go-rwx {} + || die
# Remove empty runtime dirs created by build system (bug #892341)
find "${ED}"/{run,var} -type d -empty -delete || die
if multilib_is_native_abi ; then
# Install ldap schema for server (bug #491002)
if use ldap ; then
insinto /etc/openldap/schema
doins examples/LDAP/samba.schema
fi
# Create symlink for cups (bug #552310)
if use cups ; then
dosym ../../../bin/smbspool \
/usr/libexec/cups/backend/smb
fi
# Install example config file
insinto /etc/samba
doins examples/smb.conf.default
# Fix paths in example file (bug #603964)
sed \
-e '/log file =/s@/usr/local/samba/var/@/var/log/samba/@' \
-e '/include =/s@/usr/local/samba/lib/@/etc/samba/@' \
-e '/path =/s@/usr/local/samba/lib/@/var/lib/samba/@' \
-e '/path =/s@/usr/local/samba/@/var/lib/samba/@' \
-e '/path =/s@/usr/spool/samba@/var/spool/samba@' \
-i "${ED}"/etc/samba/smb.conf.default || die
# Install init script and conf.d file
newinitd "${CONFDIR}/samba4.initd-r1" samba
newconfd "${CONFDIR}/samba4.confd" samba
dotmpfiles "${FILESDIR}"/samba.conf
if ! use addc ; then
rm "${D}/$(systemd_get_systemunitdir)/samba.service" \
|| die
fi
# Preserve functionality for old gentoo-specific unit names
dosym nmb.service "$(systemd_get_systemunitdir)/nmbd.service"
dosym smb.service "$(systemd_get_systemunitdir)/smbd.service"
dosym winbind.service "$(systemd_get_systemunitdir)/winbindd.service"
use python && python_optimize
fi
if use pam && use winbind ; then
newpamd "${CONFDIR}/system-auth-winbind.pam" system-auth-winbind
# bugs #376853 and #590374
insinto /etc/security
doins examples/pam_winbind/pam_winbind.conf
fi
}
pkg_postinst() {
tmpfiles_process samba.conf
}

View File

@ -1,11 +1,11 @@
# Copyright 1999-2025 Gentoo Authors
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{11..13} )
PYTHON_REQ_USE="threads(+),xml(+)"
inherit python-single-r1 flag-o-matic waf-utils multilib-minimal linux-info systemd pam tmpfiles
inherit python-single-r1 flag-o-matic waf-utils multilib-minimal linux-info optfeature systemd pam tmpfiles
DESCRIPTION="Samba Suite Version 4"
HOMEPAGE="https://samba.org/"
@ -390,4 +390,8 @@ multilib_src_install() {
pkg_postinst() {
tmpfiles_process samba.conf
if use addc || use ads ; then
optfeature "Hide passwords from command line when using samba-tool or samba-gpupdate" dev-python/setproctitle
fi
}

View File

@ -1,11 +1,11 @@
# Copyright 1999-2025 Gentoo Authors
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{11..14} )
PYTHON_REQ_USE="threads(+),xml(+)"
inherit python-single-r1 flag-o-matic waf-utils multilib-minimal linux-info systemd pam tmpfiles
inherit python-single-r1 flag-o-matic waf-utils multilib-minimal linux-info optfeature systemd pam tmpfiles
DESCRIPTION="Samba Suite Version 4"
HOMEPAGE="https://samba.org/"
@ -70,7 +70,7 @@ COMMON_DEPEND="
dev-libs/popt[${MULTILIB_USEDEP}]
dev-perl/Parse-Yapp
>=net-libs/gnutls-3.4.7:=[${MULTILIB_USEDEP}]
>=net-libs/ngtcp2-1.12.0[${MULTILIB_USEDEP}]
>=net-libs/ngtcp2-1.12.0[gnutls,${MULTILIB_USEDEP}]
>=sys-fs/e2fsprogs-1.46.4-r51[${MULTILIB_USEDEP}]
!sys-libs/ldb
sys-libs/libcap[${MULTILIB_USEDEP}]
@ -393,4 +393,8 @@ multilib_src_install() {
pkg_postinst() {
tmpfiles_process samba.conf
if use addc || use ads ; then
optfeature "Hide passwords from command line when using samba-tool or samba-gpupdate" dev-python/setproctitle
fi
}

View File

@ -1,11 +1,11 @@
# Copyright 1999-2025 Gentoo Authors
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{11..13} )
PYTHON_COMPAT=( python3_{11..14} )
PYTHON_REQ_USE="threads(+),xml(+)"
inherit python-single-r1 flag-o-matic waf-utils multilib-minimal linux-info systemd pam tmpfiles
inherit python-single-r1 flag-o-matic waf-utils multilib-minimal linux-info optfeature systemd pam tmpfiles
DESCRIPTION="Samba Suite Version 4"
HOMEPAGE="https://samba.org/"
@ -70,7 +70,7 @@ COMMON_DEPEND="
dev-libs/popt[${MULTILIB_USEDEP}]
dev-perl/Parse-Yapp
>=net-libs/gnutls-3.4.7:=[${MULTILIB_USEDEP}]
>=net-libs/ngtcp2-1.12.0[${MULTILIB_USEDEP}]
>=net-libs/ngtcp2-1.12.0[gnutls,${MULTILIB_USEDEP}]
>=sys-fs/e2fsprogs-1.46.4-r51[${MULTILIB_USEDEP}]
!sys-libs/ldb
sys-libs/libcap[${MULTILIB_USEDEP}]
@ -85,11 +85,15 @@ COMMON_DEPEND="
virtual/libiconv
$(python_gen_cond_dep '
addc? (
dev-python/cryptography[${PYTHON_USEDEP}]
dev-python/dnspython:=[${PYTHON_USEDEP}]
dev-python/markdown[${PYTHON_USEDEP}]
net-dns/bind[gssapi]
)
ads? (
dev-python/cryptography[${PYTHON_USEDEP}]
dev-python/dnspython:=[${PYTHON_USEDEP}]
dev-python/markdown[${PYTHON_USEDEP}]
net-dns/bind[gssapi]
)
')
@ -389,4 +393,8 @@ multilib_src_install() {
pkg_postinst() {
tmpfiles_process samba.conf
if use addc || use ads ; then
optfeature "Hide passwords from command line when using samba-tool or samba-gpupdate" dev-python/setproctitle
fi
}

View File

@ -1,11 +1,11 @@
# Copyright 1999-2025 Gentoo Authors
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{11..14} )
PYTHON_REQ_USE="threads(+),xml(+)"
inherit python-single-r1 flag-o-matic waf-utils multilib-minimal linux-info systemd pam tmpfiles
inherit python-single-r1 flag-o-matic waf-utils multilib-minimal linux-info optfeature systemd pam tmpfiles
DESCRIPTION="Samba Suite Version 4"
HOMEPAGE="https://samba.org/"
@ -57,8 +57,8 @@ MULTILIB_WRAPPED_HEADERS=(
/usr/include/samba-4.0/ctdb_version.h
)
TALLOC_VERSION="2.4.3"
TDB_VERSION="1.4.14"
TALLOC_VERSION="2.4.4"
TDB_VERSION="1.4.15"
TEVENT_VERSION="0.17.1"
COMMON_DEPEND="
@ -393,4 +393,8 @@ multilib_src_install() {
pkg_postinst() {
tmpfiles_process samba.conf
if use addc || use ads ; then
optfeature "Hide passwords from command line when using samba-tool or samba-gpupdate" dev-python/setproctitle
fi
}

View File

@ -1,11 +1,11 @@
# Copyright 1999-2025 Gentoo Authors
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{11..13} )
PYTHON_COMPAT=( python3_{11..14} )
PYTHON_REQ_USE="threads(+),xml(+)"
inherit python-single-r1 flag-o-matic waf-utils multilib-minimal linux-info systemd pam tmpfiles
inherit python-single-r1 flag-o-matic waf-utils multilib-minimal linux-info optfeature systemd pam tmpfiles
DESCRIPTION="Samba Suite Version 4"
HOMEPAGE="https://samba.org/"
@ -16,12 +16,12 @@ if [[ ${PV} == *_rc* ]]; then
SRC_URI="https://download.samba.org/pub/samba/rc/${MY_P}.tar.gz"
else
SRC_URI="https://download.samba.org/pub/samba/stable/${MY_P}.tar.gz"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
fi
S="${WORKDIR}/${MY_P}"
LICENSE="GPL-3"
SLOT="0/2.10.0"
SLOT="0/2.11.0"
IUSE="acl addc ads ceph client cluster cups debug fam glusterfs gpg"
IUSE+=" iprint json ldap llvm-libunwind lmdb pam profiling-data python quota"
IUSE+=" +regedit selinux snapper spotlight syslog system-heimdal +system-mitkrb5"
@ -57,9 +57,9 @@ MULTILIB_WRAPPED_HEADERS=(
/usr/include/samba-4.0/ctdb_version.h
)
TALLOC_VERSION="2.4.2"
TDB_VERSION="1.4.12"
TEVENT_VERSION="0.16.1"
TALLOC_VERSION="2.4.4"
TDB_VERSION="1.4.15"
TEVENT_VERSION="0.17.1"
COMMON_DEPEND="
>=app-arch/libarchive-3.1.2:=[${MULTILIB_USEDEP}]
@ -70,6 +70,7 @@ COMMON_DEPEND="
dev-libs/popt[${MULTILIB_USEDEP}]
dev-perl/Parse-Yapp
>=net-libs/gnutls-3.4.7:=[${MULTILIB_USEDEP}]
>=net-libs/ngtcp2-1.12.0[gnutls,${MULTILIB_USEDEP}]
>=sys-fs/e2fsprogs-1.46.4-r51[${MULTILIB_USEDEP}]
!sys-libs/ldb
sys-libs/libcap[${MULTILIB_USEDEP}]
@ -253,6 +254,8 @@ multilib_src_configure() {
EOF
fi
bundled_libs="libquic,${bundled_libs}"
local myconf=(
--enable-fhs
--sysconfdir="${EPREFIX}/etc"
@ -291,7 +294,7 @@ multilib_src_configure() {
$(multilib_native_usex python '' '--disable-python')
$(multilib_native_use_enable zeroconf avahi)
$(multilib_native_usex test '--enable-selftest' '')
$(usev system-mitkrb5 "--with-system-mitkrb5 ${ESYSROOT}/usr $(multilib_native_usex addc --with-experimental-mit-ad-dc '')")
$(usev system-mitkrb5 "--with-system-mitkrb5 $(multilib_native_usex addc --with-experimental-mit-ad-dc '')")
$(use_with ads)
$(use_with debug lttng)
$(use_with ldap)
@ -390,4 +393,8 @@ multilib_src_install() {
pkg_postinst() {
tmpfiles_process samba.conf
if use addc || use ads ; then
optfeature "Hide passwords from command line when using samba-tool or samba-gpupdate" dev-python/setproctitle
fi
}