aboutsummaryrefslogtreecommitdiff
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016, 2018, 2022 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
;;;
;;; 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-system)
  #:use-module (gnu)
  #:use-module ((gnu services) #:select (service-value))
  #:use-module (guix store)
  #:use-module (guix monads)
  #:use-module ((guix gexp) #:select (lower-object))
  #:use-module ((guix utils) #:select (%current-system))
  #:use-module (srfi srfi-1)
  #:use-module (srfi srfi-64))

;; Test the (gnu system) module.

(define %root-fs
  (file-system
    (device (file-system-label "my-root"))
    (mount-point "/")
    (type "ext4")))

(define %os
  (operating-system
    (host-name "komputilo")
    (timezone "Europe/Berlin")
    (locale "en_US.utf8")
    (bootloader (bootloader-configuration
                 (bootloader grub-bootloader)
                 (targets '("/dev/sdX"))))
    (file-systems (cons %root-fs %base-file-systems))

    (users %base-user-accounts)))

(define %luks-device
  (mapped-device
   (source "/dev/foo") (target "my-luks-device")
   (type luks-device-mapping)))

(define %os-with-mapped-device
  (operating-system
    (host-name "komputilo")
    (timezone "Europe/Berlin")
    (locale "en_US.utf8")
    (bootloader (bootloader-configuration
                 (bootloader grub-bootloader)
                 (targets '("/dev/sdX"))))
    (mapped-devices (list %luks-device))
    (file-systems (cons (file-system
                          (inherit %root-fs)
                          (dependencies (list %luks-device)))
                        %base-file-systems))
    (users %base-user-accounts)))

(%graft? #f)


(test-begin "system")

(test-assert "operating-system-store-file-system"
  ;; %BASE-FILE-SYSTEMS defines a bind-mount for /gnu/store, but this
  ;; shouldn't be a problem.
  (eq? %root-fs
       (operating-system-store-file-system %os)))

(test-assert "operating-system-store-file-system, prefix"
  (let* ((gnu (file-system
                (device "foobar")
                (mount-point (dirname (%store-prefix)))
                (type "ext5")))
         (os  (operating-system
                (inherit %os)
                (file-systems (cons* gnu %root-fs
                                     %base-file-systems)))))
    (eq? gnu (operating-system-store-file-system os))))

(test-assert "operating-system-store-file-system, store"
  (let* ((gnu (file-system
                (device "foobar")
                (mount-point (%store-prefix))
                (type "ext5")))
         (os  (operating-system
                (inherit %os)
                (file-systems (cons* gnu %root-fs
                                     %base-file-systems)))))
    (eq? gnu (operating-system-store-file-system os))))

(test-equal "operating-system-user-mapped-devices"
  '()
  (operating-system-user-mapped-devices %os-with-mapped-device))

(test-equal "operating-system-boot-mapped-devices"
  (list %luks-device)
  (operating-system-boot-mapped-devices %os-with-mapped-device))

(test-equal "operating-system-boot-mapped-devices, implicit dependency"
  (list %luks-device)

  ;; Here we expect the implicit dependency between "/" and
  ;; "/dev/mapper/my-luks-device" to be found, in spite of the lack of a
  ;; 'dependencies' field in the root file system.
  (operating-system-boot-mapped-devices
   (operating-system
     (inherit %os-with-mapped-device)
     (file-systems (cons (file-system
                           (device "/dev/mapper/my-luks-device")
                           (mount-point "/")
                           (type "ext4"))
                         %base-file-systems)))))

(test-equal "non-boot-file-system-service"
  '()

  ;; Make sure that mapped devices with at least one needed-for-boot user are
  ;; handled exclusively from the initrd.  See <https://bugs.gnu.org/31889>.
  (append-map file-system-dependencies
              (service-value
               ((@@ (gnu system) non-boot-file-system-service)
                (operating-system
                  (inherit %os-with-mapped-device)
                  (file-systems
                   (list (file-system
                           (mount-point "/foo/bar")
                           (device "qux:baz")
                           (type "none")
                           (dependencies (list %luks-device)))
                         (file-system
                           (device (file-system-label "my-root"))
                           (mount-point "/")
                           (type "ext4")
                           (dependencies (list %luks-device))))))))))

(test-assert "lower-object, %current-system sensitivity"
  ;; Make sure that 'lower-object' returns the same derivation, no matter what
  ;; '%current-system' is.  See <https://issues.guix.gnu.org/55951>.
  (let ((drv1 (with-store store
                (parameterize ((%current-system "x86_64-linux"))
                  (run-with-store store
                    (lower-object %os "aarch64-linux")))))
        (drv2 (with-store store
                (parameterize ((%current-system "aarch64-linux"))
                  (run-with-store store
                    (lower-object %os "aarch64-linux"))))))
    (eq? drv1 drv2)))

(test-end)
Andreas Enge 2024-01-26gnu: arb: Deprecate package....* gnu/packages/algebra.scm (arb): Deprecate in favor of flint, of which it is now a part. Change-Id: I02ee2110e77c582b8daf70502f7092eba7c44547 Andreas Enge 2024-01-26gnu: python-flint: Update to 0.5.0 and build with flint@3....* gnu/packages/patches/python-flint-includes.patch: Remove file. * gnu/local.mk (dist_patch_DATA): Unregister file. * gnu/packages/algebra.scm (python-flint): Update to 0.5.0. [source]: Drop patch. [inputs]: Drop arb. [native-inputs]: Use python-cython-3. Change-Id: I5fa9b201efff76e16f957aee0ebcd453ea823e69 Andreas Enge 2024-01-26gnu: flint: Update to 3.0.1....* gnu/packages/algebra.scm (flint): Update to 3.0.1. [arguments]: Remove obsolete phase additions. Change-Id: Iebac9d3a0b1e19147df9402d522c55cb168148d7 Andreas Enge 2024-01-24gnu: singular: Update to 4.3.2p10....* gnu/packages/algebra.scm (singular): Update to 4.3.2p10. Change-Id: I196d31e3f5605dd51385146ce091d63a4e9eb340 Andreas Enge 2024-01-19gnu: symengine: Update to 0.11.2....* gnu/packages/algebra.scm (symengine): Update to 0.11.2. Change-Id: I34c24dd8591e306a7740f0a3d51077aceec67fab Vinicius Monego 2023-12-25gnu: Adjust to removing ed.scm and nano.scm...This is a follow-up to f6817e71dff7d0d9fdb55db8b85a1d3d04e2bf5a and e11e65a9ad08e18ea2faac3c9f4639a7b189bf76. * gnu/installer.scm, gnu/packages/algebra.scm, gnu/packages/base.scm, gnu/packages/cook.scm, gnu/packages/lisp.scm, gnu/packages/patchutils.scm, gnu/packages/version-control.scm, gnu/packages/web-browsers.scm, gnu/system.scm: Adjust module imports. Change-Id: I25e5519fa003c35a14b81c3dda37b24527858634 Efraim Flashner 2023-11-26gnu: fftw: Update to 3.3.10...* gnu/packages/algebra.scm (fftw): Update to 3.3.10 Change-Id: Icd6e199aa4e863f0d5c0883326a02e2991b811d3 Signed-off-by: Mathieu Othacehe <othacehe@gnu.org> mtekman 2023-11-03gnu: symengine: Update to 0.11.1....* gnu/packages/algebra.scm (symengine): Update to 0.11.1. Vinicius Monego 2023-09-30gnu: Add spectra....* gnu/packages/algebra.scm (spectra): New variable. Vinicius Monego 2023-09-08gnu: tensorflow-lite: Update to 2.12.1....* gnu/packages/algebra.scm (eigen-for-tensorflow-lite): Remove variable. * gnu/packages/machine-learning.scm (tensorflow-lite): Update to 2.12.1 [arguments]<configure-flags>: Turn on GPU and RUY use; Use cmake to find packages already in Guix as dependencies for absl-cpp, eigen, flatbuffer, neon2ssl, cpuinfo, ruy. [arguments]<phases>: Remove operations setting up absl-cpp, eigen, ruy, and neon2ssl as native inouts as now we use Guix's packages of these as dependencies. Do default build phase. Add steps to install C shared library and benchmark_model tool. [inputs]: Add cpuinfo, eigen, fp16, mesa-header, opencl, pthreadpool, ruy, vulkan and xnnpack as explicit inputs. [native-inputs]: Remove local setup of neon2ssl and ruy as we now use Guix's packages of these as explicit dependencies. * gnu/packages/serialization.scm (flatbuffers-next-shared): New variable, flatbuffers-next built with -fPIC as needed by tensorflow-lite. Signed-off-by: Ricardo Wurmus <rekado@elephly.net> Andy Tai 2023-07-16gnu: xtensor: Update to 0.24.6....* gnu/packages/algebra.scm (xtensor): Update to 0.24.6. Tobias Geerinckx-Rice 2023-07-18gnu: Deprecate `texlive-tiny'....At this point, there are three equivalent TeX Live sub-systems: texlive-scheme-basic, texlive-tiny, and (texlive-updmap.cfg). It is confusing to keep so many around. * doc/contributing.texi (Submitting Patches): Remove reference to TEXLIVE-TINY. * gnu/packages/algebra.scm (pari-gp)[native-inputs]: (giac)[native-inputs]: * gnu/packages/chez.scm (chez-sockets)[native-inputs]: * gnu/packages/engineering.scm (fastcap)[native-inputs]: * gnu/packages/gettext.scm (po4a)[native-inputs]: * gnu/packages/maths.scm (cddlib)[native-inputs]: (gnuplot)[native-inputs]: (itpp)[native-inputs]: * gnu/packages/ocaml.scm (unison)[native-inputs]: * gnu/packages/pdf.scm (extractpdfmark)[native-inputs]: * gnu/packages/photo.scm (enblend-enfuse): Replace TEXLIVE-TINY with a call to TEXLIVE-UPDMAP.CFG. * gnu/packages/radio.scm (gnuradio)[native-inputs]: Remove unnecessary TEXLIVE-TINY. * gnu/packages/tex.scm (texlive-tiny): Deprecate it in favor of TEXLIVE-SCHEME-BASIC. (texlive-makecmds)[native-inputs]: Replace TEXLIVE-TINY with a call to TEXLIVE-UPDMAP.CFG. * guix/lint.scm (check-inputs-should-be-native): Check only for "texlive-updmap.cfg" input name. Nicolas Goaziou 2023-07-18gnu: Rationalize texlive-updmap.cfg and texlive-tiny inputs....TEXLIVE-UPDMAP.CFG and TEXLIVE-TINY should only be used as native inputs. Also remove texlive packages already provided by them. * doc/build.scm (pdf-manual): * gnu/packages/algebra.scm (pari-gp): * gnu/packages/bioinformatics.scm (discrover): (phyml): (velvet): * gnu/packages/chemistry.scm (yaehmop): * gnu/packages/chez.scm (stex-bootstrap): (chez-web): (chez-sockets): * gnu/packages/cran.scm (r-prereg): * gnu/packages/docbook.scm (dblatex): * gnu/packages/emacs-xyz.scm (emacs-auctex): * gnu/packages/engineering.scm (fastcap): * gnu/packages/fsf.scm (book-faif): * gnu/packages/graphviz.scm (dot2tex): * gnu/packages/maths.scm (hypre): * gnu/packages/ocaml.scm (unison): (ocaml-bibtex2html): * gnu/packages/plotutils.scm (asymptote): * gnu/packages/python-xyz.scm (python-nbconvert): (python-pypandoc): * gnu/packages/radio.scm (gnuradio): (libosmo-dsp): * gnu/packages/statistics.scm (r-with-tests): * gnu/packages/tex.scm (texlive-makecmds): (texlive-innerscript): (teximpatient): (texlive-xkeyval): Remove texlive packages already provided by TEXLIVE-UPDMAP.CFG. Don't add TEXLIVE-TINY or TEXLIVE-UPDMAP.CFG as inputs. Nicolas Goaziou 2023-07-10gnu: pari-gp: Update to 2.15.4....* gnu/packages/algebra.scm (pari-gp): Update to 2.15.4. Andreas Enge 2023-05-23gnu: cm: Update to 0.4.2....* gnu/packages/algebra.scm (cm): Update to 0.4.2. Andreas Enge 2023-04-25Merge remote-tracking branch 'origin/master' into core-updatesAndreas Enge 2023-04-25gnu: giac: Update to 1.9.0-45....* gnu/packages/algebra.scm (giac): Update to 1.9.0-45. Nicolas Goaziou 2023-04-17Merge remote-tracking branch 'origin/master' into core-updatesAndreas Enge 2023-04-16gnu: giac: Update to 1.9.0-43....* gnu/packages/algebra.scm (giac): Update to 1.9.0-43. [arguments]<#:phases>: Skip failing tests on i686. Nicolas Goaziou 2023-04-14Merge branch 'master' into core-updates....Conflicts: gnu/local.mk gnu/packages/build-tools.scm gnu/packages/certs.scm gnu/packages/check.scm gnu/packages/compression.scm gnu/packages/cups.scm gnu/packages/fontutils.scm gnu/packages/gnuzilla.scm gnu/packages/guile.scm gnu/packages/ibus.scm gnu/packages/image-processing.scm gnu/packages/linux.scm gnu/packages/music.scm gnu/packages/nss.scm gnu/packages/pdf.scm gnu/packages/python-xyz.scm gnu/packages/qt.scm gnu/packages/ruby.scm gnu/packages/shells.scm gnu/packages/tex.scm gnu/packages/video.scm gnu/packages/vulkan.scm gnu/packages/web.scm gnu/packages/webkit.scm gnu/packages/wm.scm Maxim Cournoyer 2023-04-12gnu: eigen-for-tensorflow: Do not compile broken test....* gnu/packages/algebra.scm (eigen-for-tensorflow)[arguments]: Add phase 'gcc-compatibility to avoid compiling the stddeque test, which doesn't work with the current GCC. [native-inputs]: Remove gcc-7. Ricardo Wurmus 2023-04-03gnu: symengine: Update to 0.10.1....* gnu/packages/algebra.scm (symengine): Update to 0.10.1. Vinicius Monego 2023-03-27gnu: pari-gp: Update to 2.15.3....* gnu/packages/algebra.scm (pari-gp): Update to 2.15.3. Andreas Enge 2023-03-21gnu: Add parform....* gnu/packages/algebra.scm (parform): New variable. Signed-off-by: Eric Bavier <bavier@posteo.net> Antero Mejr 2023-03-21gnu: Add form....* gnu/packages/algebra.scm (form): New variable. Signed-off-by: Eric Bavier <bavier@posteo.net> Antero Mejr 2023-03-20Merge remote-tracking branch 'origin/master' into core-updatesAndreas Enge 2023-03-12gnu: gap: Update to 4.12.2....* gnu/packages/algebra.scm (gap): Update to 4.12.2. [snippet]: Delete only bundled libraries inside hpcgap instead of the complete subdirectory. Update package names and add new packages. [arguments]: Use "make install" and a phase to install packages. Andreas Enge