~ruther/guix-local

ee248b6a7043f308eaaa2b1deb708b52d4923659 — Ludovic Courtès 11 years ago ecd06ca
activation: Make the /bin/sh symlink at activation time.

* gnu/build/install.scm (directives): Remove "/bin/sh".
* gnu/build/activation.scm (activate-/bin/sh): New procedure.
* gnu/system.scm (operating-system-activation-script): Use it.
3 files changed, 11 insertions(+), 1 deletions(-)

M gnu/build/activation.scm
M gnu/build/install.scm
M gnu/system.scm
M gnu/build/activation.scm => gnu/build/activation.scm +6 -0
@@ 26,6 26,7 @@
  #:export (activate-users+groups
            activate-etc
            activate-setuid-programs
            activate-/bin/sh
            activate-current-system))

;;; Commentary:


@@ 214,6 215,11 @@ copy SOURCE to TARGET."

  (for-each make-setuid-program programs))

(define (activate-/bin/sh shell)
  "Change /bin/sh to point to SHELL."
  (symlink shell "/bin/sh.new")
  (rename-file "/bin/sh.new" "/bin/sh"))

(define %current-system
  ;; The system that is current (a symlink.)  This is not necessarily the same
  ;; as the system we booted (aka. /run/booted-system) because we can re-build

M gnu/build/install.scm => gnu/build/install.scm +0 -1
@@ 113,7 113,6 @@ STORE."
    ("/var/guix/gcroots/current-system" -> "/run/current-system")

    (directory "/bin")
    ("/bin/sh" -> "/run/current-system/profile/bin/bash")
    (directory "/tmp" 0 0 #o1777)                 ; sticky bit

    (directory "/root" 0 0)                       ; an exception

M gnu/system.scm => gnu/system.scm +5 -0
@@ 417,6 417,11 @@ etc."

                    (use-modules (gnu build activation))

                    ;; Make sure /bin/sh is valid and current.
                    (activate-/bin/sh
                     (string-append #$(canonical-package bash)
                                    "/bin/sh"))

                    ;; Populate /etc.
                    (activate-etc #$etc)