aboutsummaryrefslogtreecommitdiff
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
;;;
;;; 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 <http://www.gnu.org/licenses/>.

(define-module (gnu packages cpio)
  #:use-module (guix licenses)
  #:use-module (gnu packages)
  #:use-module (gnu packages autotools)
  #:use-module (guix packages)
  #:use-module (guix download)
  #:use-module (guix build-system gnu))

(define-public cpio
  (package
    (name "cpio")
    (version "2.15")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/cpio/cpio-"
                                 version ".tar.bz2"))
             (sha256
              (base32
               "1nvmj2mc3nagpig75sgzvkqgzg1p01wgnlw54v4ix6ijgjwi0xlk"))
             (modules '((guix build utils)))
             (snippet
              '(begin
                 ;; Remove superfluous declaration that trips GCC 10.
                 (substitute* "src/global.c"
                   (("char \\*program_name;")
                    ""))))))
    (build-system gnu-build-system)
    (home-page "https://www.gnu.org/software/cpio/")
    (synopsis "Manage cpio and tar file archives")
    (description
     "GNU cpio copies files into or out of cpio or tar archives.  Indeed,
many formats are supported, including legacy formats.  The format is
determined automatically by the program and is handled appropriately.
Furthermore, the location of the archive is not important.  It can be another
file on the drive, a tape, or data on a pipe.")
    (license gpl3+)))
nitrd.cpio.gz". Tail-call 'file-append' to return the complete file name. * gnu/system.scm (operating-system-initrd-file): Remove 'file-append' call. * gnu/build/linux-initrd.scm (write-cpio-archive): Check whether OUTPUT already has the ".gz" suffix; rename if before invoking GZIP if it does, and otherwise after. * gnu/system/vm.scm (expression->derivation-in-linux-vm)[builder]: Do not append "/initrd" to #$initrd. Ludovic Courtès 2018-11-18linux-initrd: Return file-like objects instead of monadic values....This is an incompatible change visible to users via the 'initrd' field of 'operating-system'. However, assuming the user's 'initrd' value tail-calls to 'raw-initrd' or 'base-initrd', the switch to non-monadic style is invisible. * gnu/system/linux-initrd.scm (expression->initrd): Use 'computed-file' instead of 'gexp->derivation'. (raw-initrd, base-initrd): Adjust docstring to mention non-monadic return. * gnu/system/vm.scm (expression->derivation-in-linux-vm): Adjust accordingly. * gnu/system.scm (operating-system-directory-base-entries) (operating-system-initrd-file) (operating-system-boot-parameters): Adjust accordingly. * doc/guix.texi (operating-system Reference) (Initial RAM Disk): Update. Ludovic Courtès 2018-07-29linux-initrd: Try several file names when looking up modules....Fixes <https://bugs.gnu.org/31714>. Reported by Tonton <tonton@riseup.net>. * gnu/build/linux-modules.scm (find-module-file): New procedure. * gnu/system/linux-initrd.scm (flat-linux-module-directory)[build-exp]: Remove 'lookup' procedure and use 'find-module-file' instead. * gnu/system/mapped-devices.scm (check-device-initrd-modules): Add comment. Ludovic Courtès 2018-05-23linux-initrd: Enable "virtio-rng"....Fixes <https://bugs.gnu.org/31268>. * gnu/system/linux-initrd.scm (default-initrd-modules)[virtio-modules]: Add "virtio-rng". Ludovic Courtès 2018-03-15linux-initrd: Move 'check-device-initrd-modules' elsewhere....This mostly reverts ca23693d280de5c4031058da4d3041d830080484, which introduced a circular dependency between (gnu system linux-initrd) and (gnu system mapped-devices). Reported by Eric Bavier. * gnu/system/linux-initrd.scm (check-device-initrd-modules): Move to... * gnu/system/mapped-devices.scm (check-device-initrd-modules): ... here. * po/guix/POTFILES.in: Adjust accordingly. Ludovic Courtès 2018-03-10linux-initrd: Autoload known-module-aliases....* gnu/system/linux-initrd.scm: Autoload known-module-aliases. Danny Milosavljevic 2018-03-10linux-initrd: Skip initrd module check when 'modules.alias' can't be found....Fixes <https://bugs.gnu.org/30760>. Reported by Tomáš Čech <sleep_walker@gnu.org>. * gnu/system/linux-initrd.scm (check-device-initrd-modules): Call 'known-module-aliases' and catch 'system-error around it. Pass it to 'matching-modules'. Ludovic Courtès 2018-03-07linux-initrd: Add a hint for the missing module error....* gnu/system/linux-initrd.scm (check-device-initrd-modules): Add a '&fix-hint'. Ludovic Courtès 2018-03-07linux-initrd: Factorize 'check-device-initrd-modules'....* gnu/system/mapped-devices.scm (check-device-initrd-modules): Move to... * gnu/system/linux-initrd.scm (check-device-initrd-modules): ... here. New procedure. * po/guix/POTFILES.in: Add it. * guix/scripts/system.scm (check-initrd-modules)[check-device]: Remove. Use 'check-device-initrd-modules' instead. Ludovic Courtès 2018-03-03linux-initrd: Add virtio modules to '%base-initrd-modules'....Fixes a regression in installation tests, whereby 'guix system init' would report that virtio modules are missing for the target devices. In practice virtio modules were always available since 'base-initrd' was always called with #:virtio? #t. This commit simply moves them to '%base-initrd-modules' so that 'guix system' knows they're available. Reported by Danny Milosavljevic <dannym@scratchpost.org> at <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=30629#112>. * gnu/system/linux-initrd.scm (default-initrd-modules): Add virtio modules. (base-initrd): Remove #:virtio? and 'virtio-modules'. * gnu/system/vm.scm (expression->derivation-in-linux-vm) (system-qemu-image, virtualized-operating-system): Remove uses of #:virtio?. * doc/guix.texi (Initial RAM Disk): Update 'base-initrd' doc. Ludovic Courtès 2018-03-03linux-initrd: 'file-system-modules' returns the right module list....Fixes a bug whereby, for an "iso9660" file system, it would return '("iso9660" "isofs"), i.e., both the key and the value. Reported by Danny Milosavljevic <dannym@scratchpost.org> at <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=30629#115>. * gnu/system/linux-initrd.scm (lookup-procedure): 'vhash-assoc' returns a key/value pair; match it. Ludovic Courtès 2018-03-02system: Add 'initrd-modules' field....* gnu/system.scm (<operating-system>)[initrd-modules]: New field. (operating-system-initrd-file): Pass #:linux-modules to 'make-initrd'. * gnu/system/linux-initrd.scm (default-initrd-modules): New procedure. (%base-initrd-modules): New macro. (base-initrd): Add #:linux-modules and honor it. * gnu/system/install.scm (embedded-installation-os): Use 'initrd-modules' instead of 'initrd'. * gnu/tests/install.scm (%raid-root-os): Likewise. * doc/guix.texi (operating-system Reference): Add 'initrd-modules'. (Initial RAM Disk): Document it. Adjust example to not use #:extra-modules. Ludovic Courtès 2018-03-02linux-initrd: Separate file system module logic....* gnu/system/linux-initrd.scm (vhash, lookup-procedure): New macros. (file-system-type-modules, file-system-modules): New procedures. (base-initrd)[cifs-modules, virtio-9p-modules]: Remove. [file-system-type-predicate]: Remove. Use 'file-system-modules' instead of 'find' + 'file-system-type-predicate'. Ludovic Courtès 2018-01-30gnu: linux-libre: NVME core support is now built-in....* gnu/system/linux-initrd.scm (base-initrd)[linux-modules]: Remove "nvme". * gnu/packages/aux-files/linux-libre/4.1-i686.conf, gnu/packages/aux-files/linux-libre/4.1-x86_64.conf, gnu/packages/aux-files/linux-libre/4.4-i686.conf, gnu/packages/aux-files/linux-libre/4.4-x86_64.conf: Set CONFIG_BLK_DEV_NVME=y. * gnu/packages/aux-files/linux-libre/4.9-i686.conf, gnu/packages/aux-files/linux-libre/4.9-x86_64.conf, gnu/packages/aux-files/linux-libre/4.14-arm.conf, gnu/packages/aux-files/linux-libre/4.14-i686.conf, gnu/packages/aux-files/linux-libre/4.14-x86_64.conf: Set CONFIG_BLK_DEV_NVME=y and CONFIG_NVME_CORE=y. Mark H Weaver 2018-01-08linux-boot: Add #:on-error for initrd error handling....Suggested by Danny Milosavljevic <dannym@scratchpost.org> in <https://bugs.gnu.org/29922>. * gnu/build/linux-boot.scm (boot-system): Add #:on-error parameter and pass it to 'call-with-error-handling'. * gnu/system/linux-initrd.scm (raw-initrd): Add #:on-error and pass it. (base-initrd): Likewise. Ludovic Courtès 2017-11-08build: Use overlayfs instead of unionfs....Overlayfs is part of the kernel, while unionfs needs FUSE. This also reduces the size of the initrd by ca. 4.3% (487K). * gnu/build/linux-boot.scm (mount-root-file-system): Remove optional parameter "unionfs"; mount using overlayfs instead of unionfs; new directory layout requied by overlayfs; update documentation. [mark-as-not-killable]: Remove now unused function * gnu/system/linux-initrd.scm (file-system-packages): Remove now unused packages "unionfs-fuse/static" and thus unused related 'if'. (linux-modules): Replace "fuse" by "overlay". Hartmut Goebel 2017-10-11file-systems: 'mount-file-system' now takes a <file-system> object....* gnu/build/file-systems.scm (mount-file-system): Rename 'spec' to 'fs' and assume it's a <file-system>. * gnu/build/linux-boot.scm (boot-system): Assume MOUNTS is a list of <file-system> and adjust accordingly. * gnu/build/linux-container.scm (mount-file-systems): Remove 'file-system->spec' call. * gnu/services/base.scm (file-system-shepherd-service): Add 'spec->file-system' call. Add (gnu system file-systems) to 'modules'. * gnu/system/linux-initrd.scm (raw-initrd): Use (gnu system file-systems). Add 'spec->file-system' call for #:mounts. Ludovic Courtès 2017-10-08linux-initrd: Ensure that the guile used in the initrd is referenced....By referencing guile from the initrd output explicitly, it will be present in the store when this initrd is used. If the exact guile used within the initrd isn't present in the store, then after root is switched during the boot process, loading modules (such as (ice-9 popen)) won't work. This fixes guix-patches bug #28399, "Fix mysql activation, and add a basic test". * gnu/system/linux-initrd.scm (expression->initrd)[builder]: Write out a file called references in to the initrd output, which includes the store path for guile. Christopher Baines 2017-07-04linux-initrd: Avoid monadic style a bit....* gnu/system/linux-initrd.scm (expression->initrd): Use 'program-file' for 'init'. (flat-linux-module-directory): Use 'computed-file' instead of 'gexp->derivation'. (raw-initrd): Adjust accordingly. Ludovic Courtès 2017-07-02linux-initrd: Add isofs if necessary....* gnu/system/linux-initrd.scm (base-initrd): Add isofs. Danny Milosavljevic 2017-05-19vm: Support creating FAT partitions....* gnu/build/vm.scm (create-ext-file-system, create-fat-file-system): New procedures. (format-partition): Use them. Error for unknown file systems. * gnu/system/vm.scm (qemu-image): Include DOSFSTOOLS. * gnu/system/linux-initrd.scm (base-initrd): Always add nls_is8859-1.ko. Marius Bakke 2017-03-21file-systems: Do not use (gnu packages …)....Fixes a regression introduced in 7208995426714c9fc3ad59cadc3cc0f52df0f018 whereby (gnu system file-systems) would pull in (gnu packages …) module, which in turn breaks when importing things like (gnu build shepherd). * gnu/system/file-systems.scm (file-system-type-predicate): Export. (file-system-packages): Move to... * gnu/system/linux-initrd.scm (file-system-packages): ... here. Add docstring. * gnu/services/base.scm: Use it. * tests/file-systems.scm ("does not pull (gnu packages …)"): New test. Ludovic Courtès 2017-03-18file-systems: Factorize file-system-packages....* gnu/system/linux-initrd.scm (base-initrd): Move helper-packages body to ... * gnu/system/file-systems.scm (file-system-packages): ... here. New variable. Also export it. Danny Milosavljevic 2017-03-11linux-initrd: Add a raw-initrd and use it to define base-initrd....* gnu/system/linux-initrd.scm (raw-initrd): New exported variable. (base-initrd): Use raw-initrd to build the initrd. * doc/guix.texi (Initial RAM Disk): Document it. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Mathieu Othacehe 2017-01-10system: Add btrfs file system support....* gnu/build/file-systems.scm (%btrfs-endianness, btrfs-superblock?, read-btrfs-superblock, btrfs-superblock-uuid, btrfs-superblock-volume-name, check-btrfs-file-system): New variables. (%paritition-label-readers, %partition-uuid-readers): Add btrfs readers. * gnu/system/linux-initrd.scm (linux-modules): Add btrfs modules when a btrfs file-system is used. * gnu/tests/install.scm (%btrfs-root-os %btrfs-root-os-source, %btrfs-root-installation-script, %test-btrfs-root-os): New system test. * doc/guix.texi: Adjust accordingly. Fixes <http://bugs.gnu.org/19280>. David Craven 2016-12-18linux-initrd: Support FAT filesystems....* gnu/system/linux-initrd.scm (base-initrd): When a FAT filesystem is present: Add fatfsck/static in 'helper-packages'; and add nls_iso8859-1 in 'linux-modules'. Marius Bakke 2016-09-05system: Use 'source-module-closure' where needed....* gnu/system/vm.scm (%vm-module-closure): Remove. (expression->derivation-in-linux-vm): Use 'source-module-closure' instead of %VM-MODULE-CLOSURE. (qemu-image): Likewise. * gnu/system/linux-initrd.scm (expression->initrd): Likewise. (flat-linux-module-directory, base-initrd): Likewise. * gnu/system/mapped-devices.scm (open-luks-device): Likewise. Ludovic Courtès