guix-devel
[Top][All Lists]
Advanced

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

Re: [PATCH] gnu: Add systemd.


From: Marius Bakke
Subject: Re: [PATCH] gnu: Add systemd.
Date: Sun, 01 Apr 2018 22:11:48 +0200
User-agent: Notmuch/0.26 (https://notmuchmail.org) Emacs/25.3.1 (x86_64-pc-linux-gnu)

Efraim Flashner <address@hidden> writes:

>> +    (build-system meson-build-system)
>> +    (arguments
>> +     `(#:tests? #f             ;FIXME: The disable-broken-tests phase is 
>> ineffective.
>> +       #:configure-flags
>> +       (let ((bash            (assoc-ref %build-inputs "bash"))
>> +             (coreutils       (assoc-ref %build-inputs "coreutils"))
>> +             (kbd             (assoc-ref %build-inputs "kbd"))
>> +             (kmod            (assoc-ref %build-inputs "kmod"))
>> +             (util-linux      (assoc-ref %build-inputs "util-linux"))
>> +
>> +             (out (assoc-ref %outputs "out")))
>> +         (list (string-append "-Dkill-path=" coreutils "/bin/kill")
>> +               (string-append "-Dkmod-path=" kmod "/bin/kmod")
>> +               (string-append "-Dsulogin-path=" util-linux "/bin/sulogin")
>> +               (string-append "-Dmount-path=" util-linux "/bin/mount")
>> +               (string-append "-Dumount-path=" util-linux "/bin/umount")
>> +               (string-append "-Dloadkeys-path=" kbd "/bin/loadkeys")
>> +               (string-append "-Dsetfont-path=" kbd "/bin/setfont")
>> +               (string-append "-Ddebug-shell=" bash "/bin/sh")
>> +
>> +               ;; XXX: Can we reuse %ntp-servers here?
>> +               (string-append "-Dntp-servers="
>> +                              (string-join (map (lambda (n)
>> +                                                  (string-append 
>> (number->string n)
>> +                                                                 
>> ".guix.pool.ntp.org"))
>> +                                                '(0 1 2 3))
>> +                                           ","))
>> +
>> +               ;; Use localhost for DNS with fallback to Quad9 (instead of 
>> Google).
>> +               "-Ddns-servers=127.0.0.1,::1,9.9.9.10,2620:fe::10"
>> +
>> +               ;; FIXME: "Attempt to load external entity 
>> http://docbook.sf.net";.
>> +               "-Dman=false"
>> +
>> +               ;; Don't install SysV compatibility scripts.
>> +               "-Dsysvinit-path="
>> +               "-Dsysvrcnd-path="
>
> ;; Don't record build time.
> "-Dtime-epoch=1"

Good catch!

>> +
>> +               (string-append "-Dbashcompletiondir=" out 
>> "/etc/bash_completion.d")
>> +               (string-append "-Dsysconfdir=" out "/etc")
>> +               (string-append "-Drootprefix=" out)
>> +               (string-append "-Drootlibdir=" out "/lib")
>> +               (string-append "-Ddbuspolicydir=" out "/etc/dbus-1/system.d")
>> +               (string-append "-Dpamconfdir=" out "/etc/pam.d")))
>> +       #:phases (modify-phases %standard-phases
>> +                  (add-after 'unpack 'patch-paths
>> +                    (lambda* (#:key inputs outputs #:allow-other-keys)
>> +                      (let ((bash            (assoc-ref inputs "bash"))
>> +                            (coreutils       (assoc-ref inputs "coreutils"))
>> +                            (glibc           (assoc-ref inputs "glibc"))
>> +                            (util-linux      (assoc-ref inputs 
>> "util-linux"))
>> +
>> +                            (out (assoc-ref outputs "out")))
>> +
>> +                        (substitute* '("src/core/swap.c"
>> +                                       "src/fsck/fsck.c"
>> +                                       "src/journal/cat.c"
>> +                                       "src/nspawn/nspawn.c"
>> +                                       "src/nspawn/nspawn-setuid.c")
>> +                          (("/bin/sh") (string-append bash "/bin/sh"))
>
> this could be (which "sh")

In a cross-compilation context, "which" might pick up the "native"
bash, which is why I opted for the explicit coreutils and bash inputs.

>> +                        ;; Create the hwdb in out/etc/udev/hwdb.d, not 
>> /etc/udev.
>> +                        (substitute* "hwdb/meson.build"
>> +                          (("systemd-hwdb update")
>> +                           (string-append "systemd-hwdb -r " out
>> +                                          "/etc/udev/hwdb.d update")))
>> +                        #t)))
>> +                  (add-before 'configure 'set-runpath
>> +                    (lambda* (#:key outputs #:allow-other-keys)
>> +                      (let ((out (assoc-ref outputs "out")))
>> +                        ;; We need out/lib and out/lib/systemd in RUNPATH.
>> +                        (setenv "LDFLAGS" (string-append "-Wl,-rpath=" out 
>> "/lib,"
>> +                                                         "-rpath=" out 
>> "/lib/systemd"))
>> +                        #t)))
>> +                  (add-before 'check 'disable-broken-tests
>> +                    (lambda _
>> +                      (delete-file "test-network")           ;requires 
>> loopback
>> +                      (delete-file "test-engine")            ;requires 
>> cgroups
>> +                      (delete-file "test-unit-name")         ;likewise
>> +                      (delete-file "test-unit-file")         ;likewise
>> +                      (delete-file "test-copy")              ;FIXME
>> +                      (delete-file "test-condition")         ;requires 
>> containers
>> +                      (delete-file "test-mount-util")        ;requires /sys
>> +                      (delete-file "test-exec-util")         ;FIXME
>> +                      (delete-file "test-xattr-util")        ;FIXME
>> +                      (delete-file "test-fs-util")           ;requires 
>> /var/tmp
>> +                      (delete-file "test-stat-util")         ;FIXME
>> +                      (delete-file "test-user-util")         ;needs "root" 
>> user
>> +                      (delete-file "test-path-lookup")       ;expects 
>> systemd paths
>> +                      (delete-file "test-namespace")         ;requires 
>> containers
>> +                      (delete-file "test-bpf")               ;requires 
>> cgroups
>> +                      (delete-file "test-fileio")            ;FIXME
>> +                      (delete-file "test-time-util")         ;FIXME tzdata
>> +                      (delete-file "test-date")              ;likewise
>> +                      (delete-file "test-calendarspec")      ;likewise
>> +                      (delete-file "test-cgroup-util")       ;requires 
>> cgroup (duh)
>> +                      (delete-file "test-strv")              ;FIXME
>> +                      (delete-file "test-path-util")         ;FIXME /bin/sh
>> +                      (delete-file "test-path")              ;requires 
>> cgroup
>> +                      (delete-file "test-sched-prio")        ;requires 
>> cgroup
>> +                      (delete-file "test-id128")             ;FIXME
>> +                      (delete-file "test-journal-flush")     ;FIXME
>> +                      (delete-file "test-bus-creds")         ;requires 
>> cgroup
>> +                      (delete-file "test-login")             ;FIXME
>> +                      (delete-file "test-dhcp-client")       ;requires 
>> network
>> +                      (delete-file "test-dhcp6-client")      ;likewise
>> +                      #t))
>> +                  (add-after 'install 'fix-environment-symlink
>> +                    (lambda* (#:key outputs #:allow-other-keys)
>> +                      ;; The install phase creates this dangling symlink:
>> +                      ;; lib/environment.d/00-environment.conf -> 
>> ../../etc/environment
>> +                      ;; ...which causes the 'fix-runpath' phase to error 
>> out.
>> +                      ;; XXX: This should probably use /etc/environment 
>> instead.
>> +                      (mkdir-p (string-append (assoc-ref outputs "out")
>> +                                              "/etc/environment"))
>> +                      #t)))))
>> +    (native-inputs
>> +     `(("docbook-xml" ,docbook-xml)
>> +       ("docbook-xsl" ,docbook-xsl)
>> +       ("gettext" ,gettext-minimal)
>> +       ("gperf" ,gperf)
>> +       ("lxml" ,python-lxml)
>> +       ("m4" ,m4)
>> +       ("pkg-config" ,pkg-config)
>> +       ("xsltproc" ,libxslt)))
>> +    (inputs
>> +     `(("acl" ,acl)
>> +       ("audit" ,audit)
>> +       ("bash" ,bash)
>
> we probably don't need to include bash specifically, isn't it part of
> the build system? Also, it should be bash-minimal

Bash-minimal indeed.  Oops.  :-)

However as ng0 mentioned, bash is soon part of systemd, so it won't be
needed for very long.

(I'm not sure we can joke about this, since we've talked about including
"gash"[0] in the initrd...)

[0] https://gitlab.com/rutger.van.beusekom/gash

>> +       ("bzip2" ,bzip2)
>> +       ("coreutils" ,coreutils)
>> +       ("cryptsetup" ,cryptsetup)
>> +       ("curl" ,curl)
>> +       ("dbus" ,dbus)
>> +       ;; TODO: Add gnu-efi for bootloader functionality.
>> +       ("elfutils" ,elfutils)
>
> Currently elfutils fails its test phase on armhf and aarch64, so we'll
> need to fix this before rolling it out so we don't cut out users on
> these platforms

That's a shame.  Users of those platforms will have to step in and do
their part if they want to enjoy the New And Improved GuixSD.

>> +       ("glib" ,glib)
>> +       ("glibc" ,glibc)
>
> what about our future Hurd users?

I'm sure Linux and the Hurd will both be subsumed by systemd in due time.

[...]

> Currently installing fails with the error:
> Failed to run install script 
> '/gnu/store/rl5m6cysqhizqr2nminx2nxficpiadmi-bash-4.4.12/bin/sh -c test -n 
> "$DESTDIR" || 
> /gnu/store/mqgzqi600k8yqhih863r6ngw0bmamqkq-systemd-238/bin/journalctl 
> --version'
> FAILED: meson-install

You'll need <https://bugs.gnu.org/31014> to make linking work properly.

Thanks for the feedback!

Attachment: signature.asc
Description: PGP signature


reply via email to

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