guix-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug#33471] [PATCH] gnu: elogind: Update to 239.2.


From: Marius Bakke
Subject: [bug#33471] [PATCH] gnu: elogind: Update to 239.2.
Date: Fri, 23 Nov 2018 19:47:50 +0100
User-agent: Notmuch/0.28 (https://notmuchmail.org) Emacs/26.1 (x86_64-pc-linux-gnu)

Stefan Stefanović <address@hidden> writes:

> Hello,
> Guix.

Hello Stefan!

> Elogind version 239.2 was released upstream,
> as I announced here is the Guix elogind package update.
>
> Sorry for the delay,
> it took me a while to reconfigure my system
> and test this release. It works, for me, as expected.

Thank you very much for this work (again!).

Overall the patch LGTM, some nitpicks:

> From e220c336852ce6e5ae2c746fd70aacff18763cd9 Mon Sep 17 00:00:00 2001
> From: =?UTF-8?q?Stefan=20Stefanovi=C4=87?= <address@hidden>
> Date: Fri, 23 Nov 2018 04:47:02 +0100
> Subject: [PATCH] gnu: elogind: Update to 239.2.
>
> * gnu/packages/freedesktop.scm (elogind): Update to 239.2.
>     [version]: Use git-version.
>     [source](method): Use git-fetch.
>     [source](file-name): Use git-file-name.
>     [source](patches): Remove elogind-glibc-2.27.patch.
>     [source](snippet):
>       Use substitute on meson.build file
>       to clean RUNPATH and adjust pkttyagent path.
>       Use substitute on man/meson.build file
>       to build man pages without internet access.
>       Use substitute on src/login/elogind.c file
>       to change elogind.pid file path to tmpfs mount point.
>     [arguments]<#:configure-flags>: Adjust build paths.
>     [arguments]<#:make-flags>: Remove argument.
>     [arguments]<#:phases>:
>       [patch-locale-header]: Remove phase.
>       [bootstrap]: Delete phase.
>       [fix-service-file]: Remove phase.
>       [add-libcap-to-search-path]: Remove phase.
>       [remove-uaccess-tag]: Remove phase.
>     [build-system]: Switch to meson-build-system.
>     [native-inputs]:
>       Remove: autoconf, automake, libtool, intltool.
>       Add: docbook-xml-4.2, python-lxml.
>     [inputs]:
>       Remove: linux-libre-headers.
>       Add: audit, glibc, libseccomp, libselinux, pcre2,
>            python, util-linux.

I'm surprised by the amount of new dependencies since I tried packaging
236.  Are all these actually required?  Or do they enable optional
functionality?  For the latter case I'd prefer a separate patch that
adds it.

>     [synopsis]: Small adjustment.

Can you align these with the left margin?  The lines can be longer too.

>
> * gnu/packages/patches/elogind-glibc-2.27.patch: Delete file.
> * gnu/local.mk (dist_patch_DATA): Remove patch file.
> ---
>  gnu/local.mk                                  |   1 -
>  gnu/packages/freedesktop.scm                  | 238 +++++++++---------
>  gnu/packages/patches/elogind-glibc-2.27.patch |  22 --
>  3 files changed, 123 insertions(+), 138 deletions(-)
>  delete mode 100644 gnu/packages/patches/elogind-glibc-2.27.patch
>
> diff --git a/gnu/local.mk b/gnu/local.mk
> index c56278e93..1b1511e54 100644
> --- a/gnu/local.mk
> +++ b/gnu/local.mk
> @@ -659,7 +659,6 @@ dist_patch_DATA =                                         
> \
>    %D%/packages/patches/dropbear-CVE-2018-15599.patch         \
>    %D%/packages/patches/dvd+rw-tools-add-include.patch                \
>    %D%/packages/patches/elfutils-tests-ptrace.patch           \
> -  %D%/packages/patches/elogind-glibc-2.27.patch                      \
>    %D%/packages/patches/einstein-build.patch                  \
>    %D%/packages/patches/emacs-exec-path.patch                 \
>    %D%/packages/patches/emacs-fix-scheme-indent-function.patch        \
> diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
> index 5cc2699ad..14980b2ed 100644
> --- a/gnu/packages/freedesktop.scm
> +++ b/gnu/packages/freedesktop.scm
> @@ -43,6 +43,7 @@
>    #:use-module (gnu packages acl)
>    #:use-module (gnu packages admin)
>    #:use-module (gnu packages autotools)
> +  #:use-module (gnu packages base)
>    #:use-module (gnu packages bash)
>    #:use-module (gnu packages boost)
>    #:use-module (gnu packages check)
> @@ -65,6 +66,7 @@
>    #:use-module (gnu packages libusb)
>    #:use-module (gnu packages linux)
>    #:use-module (gnu packages m4)
> +  #:use-module (gnu packages pcre)
>    #:use-module (gnu packages perl)
>    #:use-module (gnu packages perl-check)
>    #:use-module (gnu packages polkit)
> @@ -72,6 +74,7 @@
>    #:use-module (gnu packages perl)
>    #:use-module (gnu packages perl-check)
>    #:use-module (gnu packages python)
> +  #:use-module (gnu packages selinux)
>    #:use-module (gnu packages valgrind)
>    #:use-module (gnu packages w3m)
>    #:use-module (gnu packages web)
> @@ -227,124 +230,129 @@ the freedesktop.org XDG Base Directory 
> specification.")
>      (license license:expat)))
>  
>  (define-public elogind
> -  (package
> -    (name "elogind")
> -    (version "232.4")
> -    (source (origin
> -              (method url-fetch)
> -              (uri (string-append "https://github.com/elogind/elogind/";
> -                                  "archive/v" version ".tar.gz"))
> -              (file-name (string-append name "-" version ".tar.gz"))
> -              (sha256
> -               (base32
> -                "1qcxian48z2dj5gfmp7brrngdydqf2jm00f4rjr5sy1myh8fy931"))
> -              (patches (search-patches "elogind-glibc-2.27.patch"))
> -              (modules '((guix build utils)))
> -              (snippet
> -               '(begin
> -                  (use-modules (guix build utils))
> -                  (substitute* "Makefile.am"
> -                    ;; Avoid validation against DTD because the DTDs for
> -                    ;; both doctype 4.2 and 4.5 are needed.
> -                    (("XSLTPROC_FLAGS = ") "XSLTPROC_FLAGS = --novalid"))
> -                  #t))))
> -    (build-system gnu-build-system)
> -    (arguments
> -     `(#:tests? #f ;FIXME: "make check" in the "po" directory fails.
> -       #:configure-flags
> -       (list (string-append "--with-udevrulesdir="
> -                            (assoc-ref %outputs "out")
> -                            "/lib/udev/rules.d")
> -
> -             ;; Let elogind be its own cgroup controller, rather than relying
> -             ;; on systemd or OpenRC.  By default, 'configure' makes an
> -             ;; incorrect guess.
> -             "--with-cgroup-controller=elogind"
> -
> -             (string-append "--with-rootprefix="
> -                            (assoc-ref %outputs "out"))
> -             (string-append "--with-rootlibexecdir="
> -                            (assoc-ref %outputs "out")
> -                            "/libexec/elogind")
> -             ;; These are needed to ensure that lto linking works.
> -             "RANLIB=gcc-ranlib"
> -             "AR=gcc-ar"
> -             "NM=gcc-nm")
> -       #:make-flags 
> '("PKTTYAGENT=/run/current-system/profile/bin/pkttyagent")
> -       #:phases
> -       (modify-phases %standard-phases
> -         (add-after 'unpack 'patch-locale-header
> -           (lambda _
> -             ;; Fix compilation with glibc >= 2.26, which removed xlocale.h.
> -             ;; This can be removed for elogind 234.
> -             (substitute* "src/basic/parse-util.c"
> -               (("xlocale\\.h") "locale.h"))
> -             #t))
> -         (replace 'bootstrap
> -           (lambda _
> -             (invoke "intltoolize" "--force" "--automake")
> -             (invoke "autoreconf" "-vif")))
> -         (add-before 'build 'fix-service-file
> -           (lambda* (#:key outputs #:allow-other-keys)
> -             ;; Fix the file name of the 'elogind' binary in the D-Bus
> -             ;; '.service' file.
> -             (substitute* "src/login/org.freedesktop.login1.service"
> -               (("^Exec=.*")
> -                (string-append "Exec=" (assoc-ref %outputs "out")
> -                               "/libexec/elogind/elogind\n")))
> -             #t))
> -         (add-after 'install 'add-libcap-to-search-path
> -           (lambda* (#:key inputs outputs #:allow-other-keys)
> -             ;; Add a missing '-L' for libcap in libelogind.la.  See
> -             ;; 
> <https://lists.gnu.org/archive/html/guix-devel/2017-09/msg00084.html>.
> -             (let ((libcap (assoc-ref inputs "libcap"))
> -                   (out    (assoc-ref outputs "out")))
> -               (substitute* (string-append out "/lib/libelogind.la")
> -                 (("-lcap")
> -                  (string-append "-L" libcap "/lib -lcap")))
> -               #t)))
> -         (add-after 'unpack 'remove-uaccess-tag
> -           (lambda _
> -             ;; systemd supports a "uaccess" built-in tag, but eudev 
> currently
> -             ;; doesn't.  This leads to eudev warnings that we'd rather not
> -             ;; see, so remove the reference to "uaccess."
> -             (substitute* "src/login/73-seat-late.rules.in"
> -               (("^TAG==\"uaccess\".*" line)
> -                (string-append "# " line "\n")))
> -             #t)))))
> -    (native-inputs
> -     `(("autoconf" ,autoconf)
> -       ("automake" ,automake)
> -       ("libtool" ,libtool)
> -       ("intltool" ,intltool)
> -       ("gettext" ,gettext-minimal)
> -       ("python" ,python)
> -       ("docbook-xsl" ,docbook-xsl)
> -       ("docbook-xml" ,docbook-xml)
> -       ("xsltproc" ,libxslt)
> -       ("m4" ,m4)
> -       ("libxml2" ,libxml2)                     ;for XML_CATALOG_FILES
> -       ("pkg-config" ,pkg-config)
> -
> -       ;; Use gperf 3.0 to work around
> -       ;; <https://github.com/wingo/elogind/issues/8>.
> -       ("gperf" ,gperf-3.0)))
> -    (inputs
> -     `(("linux-pam" ,linux-pam)
> -       ("linux-libre-headers" ,linux-libre-headers)
> -       ("libcap" ,libcap)
> -       ("shepherd" ,shepherd)                ;for 'halt' and 'reboot', 
> invoked
> -                                             ;when pressing the power button
> -       ("dbus" ,dbus)
> -       ("eudev" ,eudev)
> -       ("acl" ,acl)))           ;to add individual users to ACLs on /dev 
> nodes
> -    (home-page "https://github.com/elogind/elogind";)
> -    (synopsis "User, seat, and session management service")
> -    (description "Elogind is the systemd project's \"logind\" service,
> +  (let* ((commit "30c4221a9785a9e03ba37ece364ed8ff36d46480")
> +         (revision "1")
> +         (version (git-version "239.2" revision commit)))
> +    (package
> +      (name "elogind")
> +      (version version)
> +      (source (origin
> +                (method git-fetch)
> +                (uri (git-reference
> +                      (url "https://github.com/elogind/elogind";)
> +                      (commit commit)))
> +                (file-name (git-file-name name version))
> +                (sha256
> +                 (base32
> +                  "17khwbzqmkfd3hcscs51kzdpvq9p2llm08vbpsdhy9yxgwfzlfa6"))

Can you split this into two patches: one that switches the current
elogind package to use "git-fetch", and afterwards this update?

Please also remove the let binding so that we can keep the original
indentation.  Those bindings are usually only necessary for packages
that don't have a proper versioning scheme, unlike elogind.

> +                (modules '((guix build utils)))
> +                (snippet
> +                 '(begin
> +                    (use-modules (guix build utils))
> +                    (substitute* "meson.build"
> +                      ;; Clean RUNPATH.
> +                      (("install_rpath :") "#install_rpath :")
> +                      ;; TODO: Remove $ORIGIN from RUNPATH
> +                      ;;       of libexec executables.

I think meson-build-system on 'core-updates' does this, if it does not
already (doesn't ld-wrapper ignore it?).  Having $ORIGIN there should
be harmless though, no?

> +                      ;; Fix pkttyagent path:
> +                      (("join_paths\\(bindir, 'pkttyagent'\\)")
> +                       "'\"/run/current-system/profile/bin/pkttyagent\"'"))

Please do this substitution in a phase, since it's very Guix-specific.

> +                    (substitute* "man/meson.build"
> +                      ;; Necessary because
> +                      ;; there is no internet access
> +                      ;; inside the build environment.
> +                      (("xsltproc_flags = \\[")
> +                       (string-append "xsltproc_flags = ["
> +                                      "        '--novalid',")))

Please retain the original comment for this substitution.

Actually, I see in my WIP branch that this is rendered unnecessary by
adding "address@hidden" as a native-input.  Did you try removing it?

> +                    (substitute* "src/login/elogind.c"
> +                      ;; Change PID file path
> +                      ;; to fmpfs mount point.
> +                      (("\"/run/elogind.pid\"")
> +                       "\"/run/systemd/elogind.pid\""))

Is it possible to adjust elogind-service instead of making this
substitution?  This is also better to do in a phase.

> +                    #t))))
> +      (build-system meson-build-system)
> +      (outputs '("out"))

'("out") is the default, so this line can be removed.

> +      (arguments
> +       `(#:tests? #t
> +         ;; Some tests fail only in chroot build environment:
> +         ;; - https://github.com/elogind/elogind/issues/45
> +         ;; Some tests assume existence of standard directories:
> +         ;; *** test_copy_bytes FAILS because there is no
> +         ;; /usr/lib/os-release or /etc/os-release file
> +         ;; *** test_chase_symlinks FAILS because there is no
> +         ;; /usr directory

Since we don't currently run the tests, I think we can skip this comment
and instead work on a followup patch that enables the tests.

> +         ;;
> +         #:configure-flags
> +         (let* ((out (assoc-ref %outputs "out"))
> +                (sysconf (string-append out "/etc"))
> +                (libexec (string-append out "/libexec/elogind"))
> +                (dbuspolicy (string-append out "/etc/dbus-1/system.d"))
> +                (shepherd (assoc-ref %build-inputs "shepherd"))
> +                (halt-path (string-append shepherd "/sbin/halt"))
> +                (kexec-path "") ;; NOTE: We need to package kexec-tools,
> +                                ;;       or support kexec with shepherd.
> +                (poweroff-path (string-append shepherd "/sbin/shutdown"))
> +                (reboot-path (string-append shepherd "/sbin/reboot")))
> +           `(,(string-append
> +               "-Drootprefix=" out)

Please use (list ...) here instead of quote/unquote.

> +             ,(string-append
> +               "-Dsysconfdir=" sysconf)
> +             ,(string-append
> +               "-Drootlibexecdir=" libexec)
> +             ,(string-append
> +               "-Ddbuspolicydir=" dbuspolicy)
> +             ,(string-append
> +               "-Dc_link_args=-Wl,-rpath=" libexec)
> +             ,(string-append
> +               "-Dcpp_link_args=-Wl,-rpath=" libexec)
> +             ,(string-append
> +               "-Dhalt-path=" halt-path)
> +             ,(string-append
> +               "-Dkexec-path=" kexec-path)
> +             ,(string-append
> +               "-Dpoweroff-path=" poweroff-path)
> +             ,(string-append
> +               "-Dreboot-path=" reboot-path)
> +             "-Dcgroup-controller=elogind"
> +             ;; Disable some tests.
> +             "-Dtests=false"
> +             "-Dslow-tests=false"))
> +         #:phases
> +         (modify-phases %standard-phases
> +           (delete 'bootstrap))))

Can you add a comment about why this is necessary?

> +      (native-inputs
> +       `(("docbook-xsl" ,docbook-xsl)
> +         ("docbook-xml-4.2" ,docbook-xml-4.2)
> +         ("docbook-xml-4.5" ,docbook-xml)
> +         ("libxml2" ,libxml2)
> +         ("m4" ,m4)
> +         ("pkg-config" ,pkg-config)
> +         ("python" ,python)
> +         ("python-lxml" ,python-lxml)
> +         ("gettext" ,gettext-minimal)
> +         ("gperf" ,gperf)
> +         ("xsltproc" ,libxslt)))
> +      (inputs
> +       `(("acl" ,acl)
> +         ("audit" ,audit)
> +         ("dbus" ,dbus)
> +         ("eudev" ,eudev)
> +         ("glibc" ,glibc)

glibc is already an input, so this can be dropped.

The rest of the patch LGTM, though I admit that I did not test it yet.

Please also make sure "make check-system TESTS=elogind" passes.  I found
I had to s|/dev/tty1|tty1| in gnu/tests/desktop.scm in my branch.

Can you send updates patches?  Thanks in advance!

> +         ("libcap" ,libcap)
> +         ("libseccomp" ,libseccomp)
> +         ("libselinux" ,libselinux)
> +         ("linux-pam" ,linux-pam)
> +         ("pcre2" ,pcre2)
> +         ("python" ,python) ;; libpython optional input
> +         ("shepherd" ,shepherd)
> +         ("util-linux" ,util-linux)))
> +      (home-page "https://github.com/elogind/elogind";)
> +      (synopsis "Elogind provides user, seat, and session management 
> service")
> +      (description "Elogind is the systemd project's \"logind\" service,
>  extracted out as a separate project.  Elogind integrates with PAM to provide
>  the org.freedesktop.login1 interface over the system bus, allowing other 
> parts
>  of a the system to know what users are logged in, and where.")
> -    (license license:lgpl2.1+)))
> +      (license license:lgpl2.1+))))
>  
>  (define-public packagekit
>    (package
> diff --git a/gnu/packages/patches/elogind-glibc-2.27.patch 
> b/gnu/packages/patches/elogind-glibc-2.27.patch
> deleted file mode 100644
> index 4ade587b5..000000000
> --- a/gnu/packages/patches/elogind-glibc-2.27.patch
> +++ /dev/null
> @@ -1,22 +0,0 @@
> -Look for memfd_create in sys/mman.h instead of linux/memfd.h.
> -Needed to build with glibc-2.27.
> -
> ---- a/configure.ac   1969-12-31 19:00:00.000000000 -0500
> -+++ b/configure.ac   2018-03-27 23:54:15.414589005 -0400
> -@@ -360,7 +360,7 @@
> - # 
> ------------------------------------------------------------------------------
> - 
> - AC_CHECK_HEADERS([sys/capability.h], [], [AC_MSG_ERROR([*** POSIX caps 
> headers not found])])
> --AC_CHECK_HEADERS([linux/memfd.h], [], [])
> -+AC_CHECK_HEADERS([sys/mman.h], [], [])
> - 
> - AC_CHECK_HEADERS([printf.h], [have_printf_h=yes], [have_printf_h=no])
> - AS_IF([test x$have_printf_h = xyes], [
> -@@ -395,6 +395,7 @@
> -                 [], [], [[
> - #include <sys/types.h>
> - #include <unistd.h>
> -+#include <sys/mman.h>
> - #include <sys/mount.h>
> - #include <fcntl.h>
> - #include <sched.h>
> -- 
> 2.19.2

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]