;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2019 Josh Holland ;;; Copyright © 2021, 2022 Tobias Geerinckx-Rice ;;; ;;; 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 . (define-module (gnu packages rcm) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) #:use-module (guix licenses) #:use-module (gnu packages python-xyz) #:use-module (gnu packages perl)) (define-public rcm (package (name "rcm") (version "1.3.5") (source (origin (method url-fetch) (uri (string-append "https://thoughtbot.github.io/rcm/dist/rcm-" version ".tar.gz")) (sha256 (base32 "0bdyksrd9i3lkmr9kq6dwa0l4g2403vnma5s4j9h8spi4rziwx14")))) (build-system gnu-build-system) (arguments '(#:phases (modify-phases %standard-phases (add-after 'patch-source-shebangs 'patch-tests (lambda _ (substitute* '("test/rcrc-tilde.t" "test/rcdn-hooks-run-in-order.t" "test/rcup-hooks-run-in-order.t") (("/bin/sh") (which "sh"))) (substitute* "test/rcup-hooks.t" (("/usr/bin/env") (which "env")))))) #:parallel-tests? #f)) (native-inputs (list perl python-cram)) (synopsis "Management suite for dotfiles") (description "The rcm suite of tools is for managing dotfiles directories. This is a directory containing all the @code{.*rc} files in your home directory (@code{.zshrc}, @code{.vimrc}, and so on). These files have gone by many names in history, such as “rc files” because they typically end in rc or “dotfiles” because they begin with a period. This suite is useful for committing your rc files to a central repository to share, but it also scales to a more complex situation such as multiple source directories shared between computers with some host-specific or task-specific files.") (license bsd-3) (home-page "https://github.com/thoughtbot/rcm"))) f='/guix/commit/gnu/build/linux-container.scm?id=0ef8fe22ed8985c9656835fc25ab3463d55b6669'>linux-container: 'container-excursion' forks to join the PID namespace....Fixes <https://issues.guix.gnu.org/61156>. * gnu/build/linux-container.scm (container-excursion): Add extra call to 'primitive-fork' and invoke THUNK in the child process. * tests/containers.scm ("container-excursion"): Remove extra 'primitive-fork' call, now unnecessary. ("container-excursion*, /proc"): New test. Ludovic Courtès 2023-01-30container: Correctly report exit status....* gnu/build/linux-container.scm (container-excursion): Return the raw status value. * tests/containers.scm ("container-excursion, same namespaces"): Add 'status:exit-val' call. * guix/scripts/container/exec.scm (guix-container-exec): Correctly handle the different cases. Ludovic Courtès 2022-09-24linux-container: Mark socket pair as SOCK_CLOEXEC....* gnu/build/linux-container.scm (run-container): Pass SOCK_CLOEXEC to 'socketpair'. Ludovic Courtès 2022-09-20linux-container: 'container-excursion*' marks its FDs as FD_CLOEXEC....Fixes <https://issues.guix.gnu.org/57827>. Reported by Mathieu Othacehe <othacehe@gnu.org>. Fixes a regression introduced with the Shepherd 0.9.2 upgrade in 1ba0e38267c9ff8bb476285091be6e297bbf136e, whereby IN and OUT would no longer be closed when 'fork+exec-command/container' would call 'exec-command*' as part of the THUNK passed to 'container-excursion*'. This is because the Shepherd 0.9.2 assumes file descriptors are properly marked as O_CLOEXEC and, consequently, 'exec-command' no longer run the close(2) loop prior to 'exec'. * gnu/build/linux-container.scm (container-excursion*): Add calls to 'fcntl'. Ludovic Courtès