unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Marius Bakke <mbakke@fastmail.com>
To: Efraim Flashner <efraim@flashner.co.il>
Cc: guix-devel@gnu.org
Subject: Re: [PATCH] gnu: Add systemd.
Date: Sun, 01 Apr 2018 22:11:48 +0200	[thread overview]
Message-ID: <87vadabsaj.fsf@fastmail.com> (raw)
In-Reply-To: <20180401140419.GC26203@macbook41>

[-- Attachment #1: Type: text/plain, Size: 9646 bytes --]

Efraim Flashner <efraim@flashner.co.il> 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 #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

  parent reply	other threads:[~2018-04-01 20:11 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-01 12:22 [PATCH] gnu: Add systemd Marius Bakke
2018-04-01 12:49 ` Ludovic Courtès
2018-04-01 17:01   ` Mark H Weaver
2018-04-01 20:07   ` Chris Marusich
2018-04-01 20:18     ` Marius Bakke
2018-04-02 21:36       ` Ludovic Courtès
2018-04-03 22:33         ` Joshua Branson
2018-04-04  0:44           ` Leo Famulari
2018-04-04  8:41             ` Ludovic Courtès
2018-04-06 18:57               ` Marius Bakke
2018-04-01 12:52 ` Nils Gillmann
2018-04-01 13:03 ` Martin Castillo
2018-04-01 14:04 ` Efraim Flashner
2018-04-01 14:19   ` Nils Gillmann
2018-04-01 20:11   ` Marius Bakke [this message]
2018-04-01 20:30     ` Nils Gillmann
2018-04-01 14:23 ` Jan Nieuwenhuizen
2018-04-01 21:55 ` Björn Höfling

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87vadabsaj.fsf@fastmail.com \
    --to=mbakke@fastmail.com \
    --cc=efraim@flashner.co.il \
    --cc=guix-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).