[bug#77789] gnu: sssd: Update to 2.9.6.

Message ID 20250414014244.20425-1-ian@retrospec.tv
State New
Headers
Series [bug#77789] gnu: sssd: Update to 2.9.6. |

Commit Message

Ian Eure April 14, 2025, 1:42 a.m. UTC
  This package has been broken since Samba was updated from 4.17.x to 4.18.x in
744e973de361fed498cdcf9725fe36aef3d7a73d.  This patch updates sssd to 2.9.6
and fixes the build.

* gnu/packages/sssd.scm (sssd): Update to 2.9.6.
[#:configure-flags]: Point to docbook catalog.
[#:phases 'patch-samba-pkgconfig]: Correct library path.
[#:phases ‘disable-active-directory-tests]: Disable tests that require AD
running in a VM.
[#:inputs]: Update docbook-xml to 4.5.

Change-Id: I13effcd34995e2e9c7fdc6d95d0fa2e35cf15bae
---
 gnu/packages/sssd.scm | 27 +++++++++++++++++++++++----
 1 file changed, 23 insertions(+), 4 deletions(-)
  

Comments

Maxim Cournoyer April 14, 2025, 6:45 a.m. UTC | #1
Hi,

Ian Eure <ian@retrospec.tv> writes:

> This package has been broken since Samba was updated from 4.17.x to 4.18.x in
> 744e973de361fed498cdcf9725fe36aef3d7a73d.  This patch updates sssd to 2.9.6
> and fixes the build.

Thanks.

> * gnu/packages/sssd.scm (sssd): Update to 2.9.6.
> [#:configure-flags]: Point to docbook catalog.
> [#:phases 'patch-samba-pkgconfig]: Correct library path.
> [#:phases ‘disable-active-directory-tests]: Disable tests that require AD
> running in a VM.
> [#:inputs]: Update docbook-xml to 4.5.
>
> Change-Id: I13effcd34995e2e9c7fdc6d95d0fa2e35cf15bae
> ---
>  gnu/packages/sssd.scm | 27 +++++++++++++++++++++++----
>  1 file changed, 23 insertions(+), 4 deletions(-)
>
> diff --git a/gnu/packages/sssd.scm b/gnu/packages/sssd.scm
> index d0dd0c400a..20107aef8a 100644
> --- a/gnu/packages/sssd.scm
> +++ b/gnu/packages/sssd.scm
> @@ -139,7 +139,7 @@ (define-public ding-libs
>  (define-public sssd
>    (package
>      (name "sssd")
> -    (version "2.9.4")
> +    (version "2.9.6")
>      (source
>       (origin
>         (method git-fetch)
> @@ -148,7 +148,7 @@ (define-public sssd
>               (commit version)))
>         (file-name (git-file-name name version))
>         (sha256
> -        (base32 "11qchs59f8y8w5ns9mqg16nrv1kglfavzvqway0aj2z6ssfxk5al"))
> +        (base32 "056l6b067bc5yi3dvlv41kg1a5hl3j3fq2xll3yfwwz4phcx8qd9"))
>         (patches (search-patches "sssd-system-directories.patch"))))
>      (build-system gnu-build-system)
>      (arguments
> @@ -180,9 +180,15 @@ (define-public sssd
>                               #$output "/etc/init.d")
>                (string-append "--with-ldb-lib-dir="
>                               #$output "/lib/ldb/modules/ldb")
> +              ;; Upstream defaults to /etc/xml/catalog, and despite the "path"
> +              ;; name, only expects one file -- so we can't use
> +              ;; $XML_CATALOG_FILES, which has docbook-xml and docbook-xsl
> +              ;; entries.
>                (string-append "--with-xml-catalog-path="
>                               #$(this-package-native-input "docbook-xml")
> -                             "/xml/dtd/docbook/catalog.xml"))
> +                             "/xml/docbook/"
> +                             #$(package-version (this-package-native-input "docbook-xml"))
> +                             "/catalog.xml"))
>        #:modules '((guix build gnu-build-system)
>                    (guix build utils)
>                    ((guix build python-build-system)
> @@ -193,6 +199,13 @@ (define-public sssd
>        #~(modify-phases %standard-phases
>            (add-after 'unpack 'ensure-no-mtimes-pre-1980
>                       ensure-no-mtimes-pre-1980)
> +          ;; sssd looks in lib/samba, but the Guix package puts things in lib/
> +          ;; Patch the path before we autoreconf.
> +          (add-before 'bootstrap 'patch-samba-pkgconfig
> +            (lambda _
> +              (substitute* '("src/external/samba.m4")
> +                (("(sambalibdir=.*/)samba" _ prefix)
> +                 prefix))))

Ah, it seems this is caused by the use of '--libdir' in Samba.  If this
breaks common expectation, perhaps we should revert that bit and find a
better fix for the samba build system not linking correctly to its
own libraries (thus missing RPATH entries, IIUC).

Otherwise feel free to push!

Reviewed-by: Maxim Cournoyer <maxim.cournoyer@gmail>
  
Ian Eure April 14, 2025, 2:45 p.m. UTC | #2
Maxim Cournoyer <maxim.cournoyer@gmail.com> writes:

> Hi,
>
> Ian Eure <ian@retrospec.tv> writes:
>
>> This package has been broken since Samba was updated from 
>> 4.17.x to 4.18.x in
>> 744e973de361fed498cdcf9725fe36aef3d7a73d.  This patch updates 
>> sssd to 2.9.6
>> and fixes the build.
>
> Thanks.
>
>> * gnu/packages/sssd.scm (sssd): Update to 2.9.6.
>> [#:configure-flags]: Point to docbook catalog.
>> [#:phases 'patch-samba-pkgconfig]: Correct library path.
>> [#:phases ‘disable-active-directory-tests]: Disable tests that 
>> require AD
>> running in a VM.
>> [#:inputs]: Update docbook-xml to 4.5.
>>
>> Change-Id: I13effcd34995e2e9c7fdc6d95d0fa2e35cf15bae
>> ---
>>  gnu/packages/sssd.scm | 27 +++++++++++++++++++++++----
>>  1 file changed, 23 insertions(+), 4 deletions(-)
>>
>> diff --git a/gnu/packages/sssd.scm b/gnu/packages/sssd.scm
>> index d0dd0c400a..20107aef8a 100644
>> --- a/gnu/packages/sssd.scm
>> +++ b/gnu/packages/sssd.scm
>> @@ -139,7 +139,7 @@ (define-public ding-libs
>>  (define-public sssd
>>    (package
>>      (name "sssd")
>> -    (version "2.9.4")
>> +    (version "2.9.6")
>>      (source
>>       (origin
>>         (method git-fetch)
>> @@ -148,7 +148,7 @@ (define-public sssd
>>               (commit version)))
>>         (file-name (git-file-name name version))
>>         (sha256
>> -        (base32 
>> "11qchs59f8y8w5ns9mqg16nrv1kglfavzvqway0aj2z6ssfxk5al"))
>> +        (base32 
>> "056l6b067bc5yi3dvlv41kg1a5hl3j3fq2xll3yfwwz4phcx8qd9"))
>>         (patches (search-patches 
>>         "sssd-system-directories.patch"))))
>>      (build-system gnu-build-system)
>>      (arguments
>> @@ -180,9 +180,15 @@ (define-public sssd
>>                               #$output "/etc/init.d")
>>                (string-append "--with-ldb-lib-dir="
>>                               #$output "/lib/ldb/modules/ldb")
>> +              ;; Upstream defaults to /etc/xml/catalog, and 
>> despite the "path"
>> +              ;; name, only expects one file -- so we can't 
>> use
>> +              ;; $XML_CATALOG_FILES, which has docbook-xml and 
>> docbook-xsl
>> +              ;; entries.
>>                (string-append "--with-xml-catalog-path="
>>                               #$(this-package-native-input 
>>                               "docbook-xml")
>> -                             "/xml/dtd/docbook/catalog.xml"))
>> +                             "/xml/docbook/"
>> +                             #$(package-version 
>> (this-package-native-input "docbook-xml"))
>> +                             "/catalog.xml"))
>>        #:modules '((guix build gnu-build-system)
>>                    (guix build utils)
>>                    ((guix build python-build-system)
>> @@ -193,6 +199,13 @@ (define-public sssd
>>        #~(modify-phases %standard-phases
>>            (add-after 'unpack 'ensure-no-mtimes-pre-1980
>>                       ensure-no-mtimes-pre-1980)
>> +          ;; sssd looks in lib/samba, but the Guix package 
>> puts things in lib/
>> +          ;; Patch the path before we autoreconf.
>> +          (add-before 'bootstrap 'patch-samba-pkgconfig
>> +            (lambda _
>> +              (substitute* '("src/external/samba.m4")
>> +                (("(sambalibdir=.*/)samba" _ prefix)
>> +                 prefix))))
>
> Ah, it seems this is caused by the use of '--libdir' in Samba. 
> If this
> breaks common expectation, perhaps we should revert that bit and 
> find a
> better fix for the samba build system not linking correctly to 
> its
> own libraries (thus missing RPATH entries, IIUC).

It’s a bit more complicated than that.  The version in master 
(2.9.4) finds the Samba libs okay, but fails on the Active 
Directory tests, which require AD running in a VM to work[1].  I’m 
not sure exatly what happened here, but I suspect the AD tests 
have some conditionality which prevented them from running on 
Samba 4.17, so we never saw those failures.

On sssd 2.9.5 or 2.9.6, the `configure' phase can’t find the Samba 
libs without the fix I added.  After addressing that, they suffer 
from the same failing AD tests, so I disabled those, based on what 
I read in the sssd developer docs.

I also have a patch to update to 2.10.2 (the latest), and it 
builds, but it likely needs more work.  Its install tries to 
create an additional directory in /var, I pointed this at the 
package output, but suspect it wants to write stuff into it, which 
isn’t going to work.  I opted for 2.9.6 because that seems safer; 
happy to share the 2.10.2 WIP patch if you’d like to finish that 
update.


> Otherwise feel free to push!

I’ll push a bit later today, but this definitely isn’t either/or, 
if we have leverage to make consumers of Samba libs work better, 
that ought to get pursued.  I might be wrong, but I assume other 
packages which depend on Samba libs would need similar changes.

Thanks,

  -- Ian

[1]: https://tests.sssd.io/en/latest/running-tests.html
  

Patch

diff --git a/gnu/packages/sssd.scm b/gnu/packages/sssd.scm
index d0dd0c400a..20107aef8a 100644
--- a/gnu/packages/sssd.scm
+++ b/gnu/packages/sssd.scm
@@ -139,7 +139,7 @@  (define-public ding-libs
 (define-public sssd
   (package
     (name "sssd")
-    (version "2.9.4")
+    (version "2.9.6")
     (source
      (origin
        (method git-fetch)
@@ -148,7 +148,7 @@  (define-public sssd
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "11qchs59f8y8w5ns9mqg16nrv1kglfavzvqway0aj2z6ssfxk5al"))
+        (base32 "056l6b067bc5yi3dvlv41kg1a5hl3j3fq2xll3yfwwz4phcx8qd9"))
        (patches (search-patches "sssd-system-directories.patch"))))
     (build-system gnu-build-system)
     (arguments
@@ -180,9 +180,15 @@  (define-public sssd
                              #$output "/etc/init.d")
               (string-append "--with-ldb-lib-dir="
                              #$output "/lib/ldb/modules/ldb")
+              ;; Upstream defaults to /etc/xml/catalog, and despite the "path"
+              ;; name, only expects one file -- so we can't use
+              ;; $XML_CATALOG_FILES, which has docbook-xml and docbook-xsl
+              ;; entries.
               (string-append "--with-xml-catalog-path="
                              #$(this-package-native-input "docbook-xml")
-                             "/xml/dtd/docbook/catalog.xml"))
+                             "/xml/docbook/"
+                             #$(package-version (this-package-native-input "docbook-xml"))
+                             "/catalog.xml"))
       #:modules '((guix build gnu-build-system)
                   (guix build utils)
                   ((guix build python-build-system)
@@ -193,6 +199,13 @@  (define-public sssd
       #~(modify-phases %standard-phases
           (add-after 'unpack 'ensure-no-mtimes-pre-1980
                      ensure-no-mtimes-pre-1980)
+          ;; sssd looks in lib/samba, but the Guix package puts things in lib/
+          ;; Patch the path before we autoreconf.
+          (add-before 'bootstrap 'patch-samba-pkgconfig
+            (lambda _
+              (substitute* '("src/external/samba.m4")
+                (("(sambalibdir=.*/)samba" _ prefix)
+                 prefix))))
           (add-after 'patch-source-shebangs 'patch-more-shebangs
             (lambda _
               (substitute* '("src/tools/analyzer/sss_analyze"
@@ -218,6 +231,12 @@  (define-public sssd
               ;; This test fails for unknown reason.
               (substitute* "src/tests/responder_socket_access-tests.c"
                 (("tcase_add_test\\(tc_utils, resp_str_to_array_test\\);") ""))))
+          (add-before 'configure 'disable-active-directory-tests
+            ;; These tests require Active Directory running in a VM.
+            (lambda _
+              (substitute* "Makefile.am"
+                (("ad_gpo_tests") "")
+                (("ad_common_tests") ""))))
           (add-before 'check 'set-libpython-path
             (lambda _
               (setenv "LD_LIBRARY_PATH"
@@ -286,7 +305,7 @@  (define-public sssd
            bc ; for tests
            check ; for tests
            cmocka ; for tests
-           docbook-xml-4.4
+           docbook-xml-4.5
            docbook-xsl
            doxygen
            gettext-minimal