Hello Simon, Simon Streit writes: > While experimenting with Samba, I noticed that some tools, especially > samba-tools will not run, and crash: > > root@motor ~# samba-tool > Traceback (most recent call last): > File "/run/current-system/profile/bin/samba-tool", line 33, in > 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 > import samba.param > ModuleNotFoundError: No module named 'talloc' > > 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. Thanks for testing samba! I've updated samba recently on the version-1.4.0 branch; but the problem probably remains (I've only tested smbd and smbclient). It's now at version 4.15.3 and I nedded to add the python-cryptogaphy, python-dnspython, python-markdown and python-pyasn1 as native inputs. Based on your findings it probably should be moved to an input. >>From 201dc8e01fa4484e24b3e088ab6a4211e9839f33 Mon Sep 17 00:00:00 2001 > From: Simon Streit > 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)) Trailing #t are no longer needed. > + (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"))) We shouldn't hard code Python versions in the paths as it'd be too prone to break. You could probably make good use of the recently introduced search-input-directory procedure here :-). > + (for-each > + (lambda (bin) > + (wrap-program (string-append out bin) > + `("PYTHONPATH" prefix (,talloc ,tdb ,python-dnspython)))) Make sure to run 'guix lint', it'll probably suggest to add minimal-bash as an input because of the use of wrap-program. > + '("/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)) Otherwise it LGTM. Could you try to rebase this patch on top of the version-1.4.0 branch? Otherwise, wait a few days and it should be merged into master. Thank you! Maxim