#!@GUILE@ --no-auto-compile -*- scheme -*- !# ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Mark H Weaver ;;; ;;; This file is part of GNU Guix. ;;; ;;; GNU Guix is free software; you can redistribute it and/or modify it ;;; under the terms of the GNU General Public License as published by ;;; the Free Software Foundation; either version 3 of the License, or (at ;;; your option) any later version. ;;; ;;; GNU Guix is distributed in the hope that it will be useful, but ;;; WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;; GNU General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with GNU Guix. If not, see . ;; IMPORTANT: We must avoid loading any modules from Guix here, ;; because we need to adjust the guile load paths first. ;; It's okay to import modules from core Guile though. (use-modules (ice-9 regex) (srfi srfi-26)) (let () (define-syntax-rule (push! elt v) (set! v (cons elt v))) (define config-lookup (let ((config '(("prefix" . "@prefix@") ("datarootdir" . "@datarootdir@") ("guilemoduledir" . "@guilemoduledir@") ("localedir" . "@localedir@"))) (var-ref-regexp (make-regexp "\\$\\{([a-z]+)\\}"))) (define (expand-var-ref match) (lookup (match:substring match 1))) (define (expand str) (regexp-substitute/global #f var-ref-regexp str 'pre expand-var-ref 'post)) (define (lookup name) (expand (assoc-ref config name))) lookup)) (define (maybe-augment-load-paths!) (unless (getenv "GUIX_UNINSTALLED") (let ((module-dir (config-lookup "guilemoduledir"))) (push! module-dir %load-path) (push! module-dir %load-compiled-path)) (let ((updates-dir (and=> (or (getenv "XDG_CONFIG_HOME") (and=> (getenv "HOME") (cut string-append <> "/.config"))) (cut string-append <> "/guix/latest")))) (when (and updates-dir (file-exists? updates-dir)) (push! updates-dir %load-path) (push! updates-dir %load-compiled-path))))) (define (run-guix-main) (let ((guix-main (module-ref (resolve-interface '(guix ui)) 'guix-main))) (bindtextdomain "guix" (config-lookup "localedir")) (bindtextdomain "guix-packages" (config-lookup "localedir")) (apply guix-main (command-line)))) (maybe-augment-load-paths!) ;; XXX: It would be more convenient to change it to: ;; (exit (run-guix-main)) ;; but since the 'guix' command is not updated by 'guix pull', we cannot ;; really do it now. (run-guix-main)) "linux-container: Correct test for unprivileged user namespace support."...This broke 'guix environment --container' on non-Debian distributions. Fixes <https://bugs.gnu.org/45066>. Reported by luhux <luhux@outlook.com>. This reverts commit 8bc5ca5160db3d82bd5b6b2b7ed80c96f42bd33e. Marius Bakke 2020-12-03linux-container: Correct test for unprivileged user namespace support....Fixes <https://bugs.gnu.org/31977>. Reported by Paul Garlick <pgarlick@tourbillion-technology.com>. * gnu/build/linux-container.scm (unprivileged-user-namespace-supported?): Return #f when the 'userns-file' does not exist. Paul Garlick 2020-10-01linux-container: Reset jailed root permissions....* gnu/build/linux-container.scm (mount-file-systems): Add 'chmod' call. * tests/containers.scm ("call-with-container, mnt namespace, root permissions"): New test. Jelle Licht 2020-09-10build: linux-container: Fix run-container....This is a follow-up of 5316dfc0f125b658e4a2acf7f00f49501663d943. Some users of run-container may expect that the container is jailed, even if there are no mounts. This is the case for some Guix tests. * gnu/build/linux-container.scm (run-container): Do not jail the container when the requested root is "/". Mathieu Othacehe 2020-09-02linux-container: Do not jail the container unconditionally....We may want to run a container inside the MNT namespace, without jailing the container. If RUN-CONTAINER is passed a null MOUNTS list, do not jail the container. * gnu/build/linux-container.scm (run-container): Do not call MOUNT-FILE-SYSTEMS if MOUNTS list is empty. Mathieu Othacehe 2019-09-12linux-container: "run-container" scripts shows the container's PID....* gnu/build/linux-container.scm (call-with-container): Add #:process-spawned-hook and honor it. * gnu/system/linux-container.scm (container-script)[script]: Define 'explain' and pass it as #:process-spawned-hook'. Ludovic Courtès 2019-07-06linux-container: Mount a new /dev/pts instance in the container....Fixes <https://bugs.gnu.org/36463>. Reported by Steffen Rytter Postas <nc@scalehost.eu>. * gnu/build/linux-container.scm (mount-file-systems): When /dev/ptmx exists on the host, explicitly mount a new instance of devpts and make /dev/ptmx a symlink to /dev/pts/ptmx. Ludovic Courtès 2019-06-23linux-container: Remove dependency on (guix utils)....Fixes a bug whereby derivations importing (gnu build linux-container), such as the 'bitlbee' and 'tor' services, would depend on the user's (guix config) file, which was pulled as a dependency of (guix utils). As a result, those derivations would vary from user to user. * gnu/build/linux-container.scm (call-with-temporary-directory): New procedure. Ludovic Courtès