Hello Marius,

Marius Bakke <mba...@fastmail.com> skribis:

> As discussed at FOSDEM, it is clear that The Shepherd does not have what
> it takes to boot a modern Linux system.  While it works today, adding
> bootloader, DNS server, NTP client, syslog, udev, seat management,
> dishwasher, hardware database, network management and other essential
> PID 1 features is going to take too much effort and duplicate work.

To be honest, while the Shepherd has been a fun hack, I’ve been more and
more feeling that yeah, it wouldn’t cut it in the long term (it’s also
become clearer Scheme as convenient as C when it comes to systems
programming and things like dealing with dependency graphs.)

Thanks a lot for taking this step!

> Meanwhile, GuixSD keeps drifting away from other distributions.  This
> patch is the first of many in order to gain feature parity with the
> modern GNU/Linux world.  2018 is surely the year of the GuixSD desktop!

I hope so!  Note that we’ll have to think about actual integration in
GuixSD.  I suppose we could change services to generate unit files?

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

I wonder if we should be concerned about these test failures.

> +    (inputs
> +     `(("acl" ,acl)
> +       ("audit" ,audit)
> +       ("bash" ,bash)
> +       ("bzip2" ,bzip2)
> +       ("coreutils" ,coreutils)
> +       ("cryptsetup" ,cryptsetup)
> +       ("curl" ,curl)
> +       ("dbus" ,dbus)
> +       ;; TODO: Add gnu-efi for bootloader functionality.
> +       ("elfutils" ,elfutils)
> +       ("glib" ,glib)
> +       ("glibc" ,glibc)
> +       ("gnutls" ,gnutls)
> +       ("kbd" ,kbd)
> +       ("kmod" ,kmod)
> +       ("libcap" ,libcap)
> +       ("libgcrypt" ,libgcrypt)
> +       ("libidn2" ,libidn2)
> +       ("libmicrohttpd" ,libmicrohttpd)
> +       ("libseccomp" ,libseccomp)
> +       ("libxkbcommon" ,libxkbcommon)
> +       ("linux-pam" ,linux-pam)
> +       ("lz4" ,lz4)
> +       ("pcre2" ,pcre2)
> +       ("python" ,python)
> +       ("qrencode" ,qrencode)
> +       ("util-linux" ,util-linux)
> +       ("xz" ,xz)
> +       ("zlib" ,zlib)))

There seem to be relatively few dependencies here.  Aren’t we missing
important features?

Also, did you make sure that the built-in HTTP server listens to 0.0.0.0
by default?  That makes remote administration much more convenient.

Thank you!

Ludo’.

Reply via email to