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: Stefan Stefanović
Subject: [bug#33471] [PATCH] gnu: elogind: Update to 239.2.
Date: Sat, 24 Nov 2018 04:10:36 +0100

On 11/23/18, Marius Bakke <address@hidden> wrote:
> 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.

Some dependencies are optional, for example python, libselinux...
I need to check the others I can not remember.

>
>>     [synopsis]: Small adjustment.
>
> Can you align these with the left margin?  The lines can be longer too.

I will, but small example, taken as a partial modification of commit message
can be very helpful.

>
>>
>> * 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?

I was not sure about this so I wrote this comment, will remove the TODO comment.
The above substitute should remain, because without it the RUNPATH is
filled with some strange artifacts, paths with 'XXXX...' strings.

>
>> +                      ;; 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.

I will.

>
> 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.

Elogind, assumed that 'elogind.pid' file is in tmpfs RAM filesystem,
it has more robust check now but this check is not tested.

'/run' is not mounted as tmpfs, unlike '/run/systemd'.
Is it feasible to make '/run' tmpfs mount point?

If we decide not to place 'elogind.pid' file in tmpfs,
we should at least change it to '/var/run/...' just to be consistent.

In any case I will move this in phase.

>
>> +                    #t))))
>> +      (build-system meson-build-system)
>> +      (outputs '("out"))
>
> '("out") is the default, so this line can be removed.

I will, I tried to be more explicit. This is my old habit, sorry.

>
>> +      (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.

I will remove this comment.
I was planing on working on those failing tests after this release.

>
>> +         ;;
>> +         #: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.

Will do. I am already contradicting my stated desire to be more explicit. :)

>
>> +             ,(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?

I will. I need to check, the standard meson phases.
Maybe we do not need it, I wrote this a few weeks ago. :(

>
>> +      (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.

Ok, will be removed.

>
> 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.

I will try that.

>
> Can you send updates patches?  Thanks in advance!

I will start working on them right away.
Thank you, for your suggestions.

Stefan.





reply via email to

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