While experimenting with Samba, I noticed that some tools, especially samba-tools will not run, and crash: --8<---------------cut here---------------start------------->8--- root@motor ~# samba-tool Traceback (most recent call last): File "/run/current-system/profile/bin/samba-tool", line 33, in <module> from samba.netcmd.main import cmd_sambatool File "/gnu/store/78baaab8085rd5xnfrpdkxdf07zkmin9-samba-mod-4.13.14/lib/python3.9/site-packages/samba/__init__.py", line 29, in <module> import samba.param ModuleNotFoundError: No module named 'talloc' --8<---------------cut here---------------end--------------->8---
Doing more testing, other tools appear to not find the libraries they need too. The combination is as folows: - samba-tool, fails when tdb missing. - samba-gpupdate Idem. - samba_dnsupdate requires dnspython, but fails when talloc missing. - samba_downgrade_db" fails when tdb missing. - samba_kcc Idem. - samba_spnupdate" Idem. - samba_upgradedns" dns not found when talloc missing. I prepared a small patch to wrap up the inputs appropriately. I hope it is acceptable that they are all combined in one wrap procedure. dnspython was added as a new input too. Kind regards Simon
>From 201dc8e01fa4484e24b3e088ab6a4211e9839f33 Mon Sep 17 00:00:00 2001 From: Simon Streit <si...@netpanic.org> Date: Mon, 3 Jan 2022 13:08:23 +0100 Subject: [PATCH] gnu: samba: Use PYTHONPATH. * gnu/packages/samba.scm (samba): Use PYTHONPATH in 'wrap-program phase.. --- gnu/packages/samba.scm | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm index bb5b402eee..33a39eb3be 100644 --- a/gnu/packages/samba.scm +++ b/gnu/packages/samba.scm @@ -235,7 +235,30 @@ (define-public samba (lambda _ (substitute* "dynconfig/wscript" (("bld\\.INSTALL_DIR.*") "")) - #t))) + #t)) + (add-after 'install 'wrap-program + ;; Some samba tools selectively fail to find talloc, tdb + ;; and dnspython. + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (string-append (assoc-ref outputs "out"))) + (talloc (string-append (assoc-ref inputs "talloc") + "/lib/python3.9/site-packages")) + (tdb (string-append (assoc-ref inputs "tdb") + "/lib/python3.9/site-packages")) + (python-dnspython (string-append + (assoc-ref inputs "python-dnspython") + "/lib/python3.9/site-packages"))) + (for-each + (lambda (bin) + (wrap-program (string-append out bin) + `("PYTHONPATH" prefix (,talloc ,tdb ,python-dnspython)))) + '("/bin/samba-tool" + "/sbin/samba-gpupdate" + "/sbin/samba_dnsupdate" + "/sbin/samba_downgrade_db" + "/sbin/samba_kcc" + "/sbin/samba_spnupdate" + "/sbin/samba_upgradedns")))))) ;; FIXME: The test suite seemingly hangs after failing to provision the ;; test environment. #:tests? #f)) @@ -258,7 +281,8 @@ (define-public samba python popt readline - tdb)) + tdb + python-dnspython)) (propagated-inputs ;; In Requires or Requires.private of pkg-config files. (list ldb talloc tevent)) -- 2.34.0