From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nils Gillmann Subject: Re: [PATCH] gnu: Add systemd. Date: Sun, 1 Apr 2018 20:30:16 +0000 Message-ID: <20180401203016.bh6z6hli6pfnmjir@abyayala> References: <20180401122259.9688-1-mbakke@fastmail.com> <20180401140419.GC26203@macbook41> <87vadabsaj.fsf@fastmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:39468) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f2jc2-0004Nf-EY for guix-devel@gnu.org; Sun, 01 Apr 2018 16:30:03 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f2jc0-0006mC-P1 for guix-devel@gnu.org; Sun, 01 Apr 2018 16:30:02 -0400 Received: from conspiracy.of.n0.is ([2a01:4f8:1c0c:7ad0::1]:46850) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1f2jc0-0006kE-Cj for guix-devel@gnu.org; Sun, 01 Apr 2018 16:30:00 -0400 Content-Disposition: inline In-Reply-To: <87vadabsaj.fsf@fastmail.com> List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: Marius Bakke Cc: guix-devel@gnu.org Marius Bakke transcribed 10K bytes: > Efraim Flashner 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...) Yeah, but that's different, right? > [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 to make linking work properly. > > Thanks for the feedback!