aboutsummaryrefslogtreecommitdiff
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; 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 (test-file-systems)
  #:use-module (guix store)
  #:use-module (guix modules)
  #:use-module (gnu system file-systems)
  #:use-module (srfi srfi-1)
  #:use-module (srfi srfi-64)
  #:use-module (ice-9 match))

;; Test the (gnu system file-systems) module.

(test-begin "file-systems")

(test-assert "file-system-needed-for-boot?"
  (let-syntax ((dummy-fs (syntax-rules ()
                           ((_ directory)
                            (file-system
                              (device "foo")
                              (mount-point directory)
                              (type "ext4"))))))
    (parameterize ((%store-prefix "/gnu/guix/store"))
      (and (file-system-needed-for-boot? (dummy-fs "/"))
           (file-system-needed-for-boot? (dummy-fs "/gnu"))
           (file-system-needed-for-boot? (dummy-fs "/gnu/guix"))
           (file-system-needed-for-boot? (dummy-fs "/gnu/guix/store"))
           (not (file-system-needed-for-boot?
                 (dummy-fs "/gnu/guix/store/foo")))
           (not (file-system-needed-for-boot? (dummy-fs "/gn")))
           (not (file-system-needed-for-boot?
                 (file-system
                   (inherit (dummy-fs (%store-prefix)))
                   (device "/foo")
                   (flags '(bind-mount read-only)))))))))

(test-assert "does not pull (guix config)"
  ;; This module is meant both for the host side and "build side", so make
  ;; sure it doesn't pull in (guix config), which depends on the user's
  ;; config.
  (not (member '(guix config)
               (source-module-closure '((gnu system file-systems))))))

(test-equal "does not pull (gnu packages …)"
  ;; Same story: (gnu packages …) should not be pulled.
  #f
  (find (match-lambda
          (('gnu 'packages _ ..1) #t)
          (_ #f))
        (source-module-closure '((gnu system file-systems)))))

(test-equal "file-system-options->alist"
  '("autodefrag" ("subvol" . "home") ("compress" . "lzo"))
  (file-system-options->alist "autodefrag,subvol=home,compress=lzo"))

(test-equal "file-system-options->alist (#f)"
  '()
  (file-system-options->alist #f))

(test-equal "alist->file-system-options"
  "autodefrag,subvol=root,compress=lzo"
  (alist->file-system-options '("autodefrag"
                                ("subvol" . "root")
                                ("compress" . "lzo"))))

(test-equal "alist->file-system-options (null)"
  #f
  (alist->file-system-options '()))


;;;
;;; Btrfs related.
;;;

(define %btrfs-root-subvolume
  (file-system
    (device (file-system-label "btrfs-pool"))
    (mount-point "/")
    (type "btrfs")
    (options "subvol=rootfs,compress=zstd")))

(define %btrfs-store-subvolid
  (file-system
    (device (file-system-label "btrfs-pool"))
    (mount-point "/gnu/store")
    (type "btrfs")
    (options "subvolid=10,compress=zstd")
    (dependencies (list %btrfs-root-subvolume))))

(define %btrfs-store-subvolume
  (file-system
    (device (file-system-label "btrfs-pool"))
    (mount-point "/gnu/store")
    (type "btrfs")
    (options "subvol=/some/nested/file/name")
    (dependencies (list %btrfs-root-subvolume))))

(test-assert "btrfs-subvolume? (subvol)"
  (btrfs-subvolume? %btrfs-root-subvolume))

(test-assert "btrfs-subvolume? (subvolid)"
  (btrfs-subvolume? %btrfs-store-subvolid))

(test-equal "btrfs-store-subvolume-file-name"
  "/some/nested/file/name"
  (parameterize ((%store-prefix "/gnu/store"))
    (btrfs-store-subvolume-file-name (list %btrfs-root-subvolume
                                           %btrfs-store-subvolume))))

(test-error "btrfs-store-subvolume-file-name (subvolid)"
            (parameterize ((%store-prefix "/gnu/store"))
              (btrfs-store-subvolume-file-name (list %btrfs-root-subvolume
                                                     %btrfs-store-subvolid))))

(test-end)
s. * Makefile.am (AUX_FILES): Remove aforementioned .conf files. Signed-off-by: Leo Famulari <leo@famulari.name> Change-Id: Ib94c61f629721f94a307e51b449e5ccd117a2f9a Wilko Meyer 2024-06-06gnu: linux-libre: Add 6.9-riscv.conf...* gnu/packages/aux-files/linux-libre/6.9-riscv.conf: New file. * Makefile.am (AUX_FILES): Register it. Change-Id: I1f5e24726c3a59bec73805068548ce5916b427f8 Signed-off-by: Zheng Junjie <zhengjunjie@iscas.ac.cn> Zheng Junjie 2024-06-03build: Align the Automake status lines of the po4a and the PO xref....* Makefile.am (AM_V_PO4A_0, AM_V_POXREF_0): Align the Automake status lines of the po4a and the PO xref, since the common width is 10 characters. Change-Id: Ic8c32f73294ba6e4ca71ab4aa889a558e4d7fcee Signed-off-by: Florian Pelz <pelzflorian@pelzflorian.de> gemmaro 2024-05-26gnu: Add linux-libre 6.9....Big thanks to Dariqq <dariqq@posteo.net> for debugging and communicating upstream about a problem with the deblobbing scripts in this kernel series! * gnu/packages/linux.scm (linux-libre-6.9-version, linux-libre-6.9-gnu-revision, deblob-scripts-6.9, linux-libre-6.9-pristine-source, linux-libre-6.9-source, linux-libre-headers-6.9, linux-libre-6.9): New variables. * gnu/packages/aux-files/linux-libre/6.9-arm.conf, gnu/packages/aux-files/linux-libre/6.9-arm64.conf, gnu/packages/aux-files/linux-libre/6.9-i686.conf, gnu/packages/aux-files/linux-libre/6.9-x86.conf: New files. * Makefile.am (AUX_FILES): Add them. Signed-off-by: Leo Famulari <leo@famulari.name> Change-Id: I8dc011a603684f0be88766b7881aa6c560b94443 Wilko Meyer 2024-05-25maint: Suggest ‘guix git authenticate’ for initial authentication....The previous recommendation, running ‘make authenticate’, was insecure because it led users to run code from the very repository they want to authenticate: https://lists.gnu.org/archive/html/guix-devel/2024-04/msg00252.html * Makefile.am (commit_v1_0_0, channel_intro_commit) (channel_intro_signer, GUIX_GIT_KEYRING, authenticate): Remove. * Makefile.am (.git/hooks/%): New target, generalization of previous ‘.git/hooks/pre-push’ target. (nodist_noinst_DATA): Add ‘.git/hooks/post-merge’. * doc/contributing.texi (Building from Git): Suggest ‘guix git authenticate’ instead of ‘make authenticate’. * etc/git/post-merge: New file. * etc/git/pre-push: Run ‘guix git authenticate’ instead of ‘make authenticate’. Reviewed-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Reported-by: Skyler Ferris <skyvine@protonmail.com> Change-Id: Ia415aa8375013d0dd095e891116f6ce841d93efd Ludovic Courtès 2024-05-22gnu: linux-libre-6.8: Add riscv config....* gnu/packages/aux-files/linux-libre/6.8-riscv.conf: New files. * Makefile.am (AUX_FILES): Add it. Change-Id: I293912d4f7fe09e281432b0f973999d9d8db582a Zheng Junjie 2024-05-19import: Add binary npm importer....* guix/scripts/import.scm: (importers): Add "npm-binary". * doc/guix.texi (Invoking guix import): Document npm-binary importer. * guix/import/npm-binary.scm: New file. * guix/scripts/import/npm-binary.scm: New file. * tests/npm-binary.scm: New file. * Makefile.am: Add them. Co-authored-by: Timothy Sample <samplet@ngyro.com> Co-authored-by: Lars-Dominik Braun <lars@6xq.net> Change-Id: I98a45068cf5b9c42790664cc743feaa7ac76f807 Jelle Licht 2024-04-30gnu: Remove linux-libre 6.7....* gnu/packages/linux.scm (linux-libre-6.7-version, linux-libre-6.7-gnu-revision, deblob-scripts-6.7, linux-libre-6.7-pristine-source, linux-libre-6.7-source, linux-libre-headers-6.7, linux-libre-6.7): Remove variables. * gnu/packages/aux-files/linux-libre/6.7-arm.conf, gnu/packages/aux-files/linux-libre/6.7-arm64.conf, gnu/packages/aux-files/linux-libre/6.7-i686.conf, gnu/packages/aux-files/linux-libre/6.7-x86_64.conf: Delete files. * Makefile.am (AUX_FILES): Remove aforementioned .conf files. Change-Id: Ic69a65e1fbfa59d893e85d26950f33195ea9fbe1 Signed-off-by: Leo Famulari <leo@famulari.name> Wilko Meyer 2024-04-19maint: Generate doc/version[-LANG].texi using `mdate-from-git.scm'....This replaces Automake's `build-aux/mdate-sh' with our own `build-aux/mdate-from-git.scm' to use reproducible timestamps from Git instead. * build-aux/mdate-from-git.scm: New script. * bootstrap: Use it to replace build-aux/mdate-sh. * Makefile.am (EXTRA_DIST): Add it. Change-Id: I17d0a7de9ffea397129c0db1728f86e28a4e245f Janneke Nieuwenhuizen 2024-04-19maint: Support running `./bootstrap' from a tarball....This fixes VERSION being empty in ./configure, which may to documentation having empty version strings. * Makefile.am (EXTRA_DIST): Add build-aux/git-version-gen. Change-Id: If127519811b25e2df0f5caa6a83a4f860fd34eb2 Janneke Nieuwenhuizen 2024-04-19maint: Cater for running `make dist' from a tarball....* Makefile.am: Use in_git_p conditional to disable Autotools' cache consistency assert and removal when bulding from tarball. (dist): Depend on doc-pot-update again when building from tarball. (dist-hook): Remove dependencies on gen-ChangeLog and gen-AUTHORS when building from tarball. (gen-ChangeLog, gen-AUTHORS): Remove guarding for building from tarball. Use set -e to avoid silently failing. (gen-tarball-version): Use $(SOURCE_DATE_EPOCH) instead of re-generating it using git; this also works running from a tarball. Change-Id: I9ebdd28a70837f6a4db610c4816bb283d176e2d9 Janneke Nieuwenhuizen 2024-04-19maint: Support `make doc-pot-update' from a tarball....* build-aux/xgettext.scm: Move setting of environment variables to shell header. (main): Use SOURCE_DATE_EPOCH as fallback for timestamp. This fixes running from a tarball. * Makefile.am (EXTRA_DIST): Add it. Change-Id: Ic487587b22495868fd2a21545a13dc9e3458299c Janneke Nieuwenhuizen 2024-04-19maint: Resurrect running `make' from a tarball....This is a follow-up to commit 8b972da068708a8b17f3ab153ea940690ca49ca9 Makefile.am: Auto-configure Git on 'make'. * configure.ac (in_git_p): New conditional. * Makefile.am (nodist_noinst_DATA): Use it to only enable this when building from Git. Change-Id: I09a90a59a4933a8cdb04124467d38209171f2a57 Janneke Nieuwenhuizen 2024-04-17guix: Add xtensa-ath9k-elf platform....* Makefile.am (MODULES): Add guix/platforms/xtensa.scm. * guix/platforms/xtensa.scm (xtensa-ath9k-elf): New variable. * doc/guix.texi: Add xtensa-ath9k-elf documentation. Change-Id: I51eef245142ed58613340c16d4bf7266e6bf6adb Signed-off-by: Ludovic Courtès <ludo@gnu.org> Jean-Pierre De Jesus DIAZ 2024-04-17maint: Use "ustar" format for tarball again....This is a follow-up to commit b0c33b1997e4a02e048ceac445b156b3a1eed76d maint: Use reproducible timestamps and name for tarball. * Makefile.am (am__tar): Add --format=ustar. Change-Id: I1e499c413703105704f49a84868ec10de69846fb Janneke Nieuwenhuizen 2024-04-14maint: Ensure generated file reproducibility for dist....* doc/local.mk (doc-clean): New target. (DIST_CONFIGURE_FLAGS): New variable. (auto-clean): Use them in new target. * Makefile.am (dist-doc-pot-update): Use it in new target. (dist): Change to depend on it to clean possibly stale files, instead of doc-pot-update directly. Add a toplevel check to ensure that Autotools cache is up to date. Change-Id: I2ff2d88db9fe1e708ab65e33e1f3d7ecee882cb4 Janneke Nieuwenhuizen 2024-04-14maint: Generate AUTHORS and ChangeLog reproducibly....* Makefile.am (gen-ChangeLog): Set LC_ALL=en_US.UTF-8 TZ=UTC0. (gen-AUTHORS): Likewise. Change-Id: I109ceffdf07b8dde6385b6b509366c47564c9f31 Janneke Nieuwenhuizen 2024-04-14maint: Use reproducible timestamps and name for tarball....* Makefile.am (gen-tarball-version): Add reproducible timestamp to tarball. (am__tar): Use it in new variable, overriding the Automake default. (GZIP_ENV): New variable, overriding the Automake default. Janneke Nieuwenhuizen 2024-04-14maint: Cater for running `make dist' from a worktree....* Makefile.am (gen-ChangeLog): Check for existance of `.git', rather than it being a directory. (gen-AUTHORS): Likewise. Change-Id: I1b7f8cc147084c1804deb7be9d36e5eeda2599cb Janneke Nieuwenhuizen 2024-03-27Merge branch 'master' into emacs-teamLiliana Marie Prikler 2024-03-22gnu: Add linux-libre 6.8....* gnu/packages/linux.scm (linux-libre-6.8-version, linux-libre-6.8-gnu-revision, deblob-scripts-6.8, linux-libre-6.8-pristine-source, linux-libre-6.8-source, linux-libre-headers-6.8, linux-libre-6.8): New variables. * gnu/packages/aux-files/linux-libre/6.8-arm.conf, gnu/packages/aux-files/linux-libre/6.8-arm64.conf, gnu/packages/aux-files/linux-libre/6.8-i686.conf, gnu/packages/aux-files/linux-libre/6.8-x86.conf: New files. * Makefile.am (AUX_FILES): Add them. Signed-off-by: Leo Famulari <leo@famulari.name> Change-Id: I338eb725e0b991c67e4d98bd1ef0c441d3d8f0c6 Wilko Meyer 2024-03-02Merge branch 'master' into emacs-teamLiliana Marie Prikler 2024-02-24gnu: emacs: Check integrity of native-compiled files....In the previous commit, we've added a patch that potentially messes with how built-in (especially preloaded) Lisp libraries are loaded. Thus, we might want to assert that these files still load fine, as reported when querying the builtin documentation of functions provided by them. * gnu/packages/aux-files/emacs/comp-integrity.el: New file. * gnu/Makefile.am (dist_noinst_DATA): Register it here. * gnu/packages/emacs.scm (emacs-no-x)[#:phases]: Add ‘validate-comp-integrity’. Liliana Marie Prikler 2024-01-22gnu: Remove linux-libre 4.14....* gnu/packages/linux.scm (linux-libre-4.14-version, linux-libre-4.14-gnu-revision, deblob-scripts-4.14, linux-libre-4.14-pristine-source, linux-libre-4.14-source, linux-libre-headers-4.14, linux-libre-4.14, linux-libre-arm-generic-4.14, linux-libre-arm-omap2plus-4.14): Remove variables. * 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: Delete files. * Makefile.am (AUX_FILES): Remove aforementioned .conf files. * gnu/tests/base.scm (%test-linux-libre-4.14): Remove variable. Change-Id: I40393b5f46b989848d569c929f1d9c986736553e Wilko Meyer 2024-01-22guix: Add ork1-elf platform....* doc/guix.texi: Document or1k-elf platform. * guix/platforms/or1k.scm (or1k-elf): New variable. * Makefile.am (MODULES): Add guix/platforms/or1k.scm. Change-Id: I3f71a0fa97f1ebd2bbdbf6cd00a93b477a123648 Jean-Pierre De Jesus DIAZ 2024-01-17gnu: Add linux-libre 6.7....* gnu/packages/linux.scm (linux-libre-6.7-version, linux-libre-6.7-gnu-revision, deblob-scripts-6.7, linux-libre-6.7-pristine-source, linux-libre-6.7-source, linux-libre-headers-6.7, linux-libre-6.7): New variables. * gnu/packages/aux-files/linux-libre/6.7-arm.conf, gnu/packages/aux-files/linux-libre/6.7-arm64.conf, gnu/packages/aux-files/linux-libre/6.7-i686.conf, gnu/packages/aux-files/linux-libre/6.7-x86.conf: New files. * Makefile.am (AUX_FILES): Add them. * Makefile.am: Update my copyright header. Change-Id: I88b633933875f64bd2859774419e077d8f36d75b Signed-off-by: Leo Famulari <leo@famulari.name> Wilko Meyer