aboutsummaryrefslogtreecommitdiff
path: root/gnu/tests/ci.scm
blob: 5294514c667f366d19e20d7cbe5438f6dbc1fd89 (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017, 2021 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017, 2018, 2019, 2020, 2021 Christopher Baines <mail@cbaines.net>
;;; Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.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 (gnu tests ci)
  #:use-module (gnu tests)
  #:use-module (gnu system)
  #:use-module (gnu system file-systems)
  #:use-module (gnu system shadow)
  #:use-module (gnu system vm)
  #:use-module (gnu services)
  #:use-module (gnu services ci)
  #:use-module (gnu services web)
  #:use-module (gnu services networking)
  #:use-module (guix gexp)
  #:use-module (guix store)
  #:export (%test-laminar))


(define %laminar-os
  ;; Operating system under test.
  (simple-operating-system
   (service dhcp-client-service-type)
   (service laminar-service-type)))

(define* (run-laminar-test #:optional (http-port 8080))
  "Run tests in %LAMINAR-OS, which has laminar running and listening on
HTTP-PORT."
  (define os
    (marionette-operating-system
     %laminar-os
     #:imported-modules '((gnu services herd)
                          (guix combinators))))

  (define vm
    (virtual-machine
     (operating-system os)
     (port-forwardings `((,http-port . 8080)))))

  (define test
    (with-imported-modules '((gnu build marionette))
      #~(begin
          (use-modules (srfi srfi-11) (srfi srfi-64)
                       (ice-9 match)
                       (gnu build marionette)
                       (web uri)
                       (web client)
                       (web response))

          (define marionette
            ;; Forward the guest's HTTP-PORT, where laminar is listening, to
            ;; port 8080 in the host.
            (make-marionette (list #$vm)))

          (test-runner-current (system-test-runner #$output))
          (test-begin "laminar")

          (test-assert "service running"
            (marionette-eval
             '(begin
                (use-modules (gnu services herd))
                (start-service 'laminar))
             marionette))

          (define* (retry-on-error f #:key times delay)
            (let loop ((attempt 1))
              (match (catch
                      #t
                      (lambda ()
                        (cons #t
                              (f)))
                      (lambda args
                        (cons #f
                              args)))
                ((#t . return-value)
                 return-value)
                ((#f . error-args)
                 (if (>= attempt times)
                     error-args
                     (begin
                       (sleep delay)
                       (loop (+ 1 attempt))))))))

          (test-equal "http-get"
            200
            (retry-on-error
             (lambda ()
               (let-values (((response text)
                             (http-get #$(format
                                          #f
                                          "http://localhost:~A/"
                                          http-port)
                                       ;; TODO: Why does decoding fail?
                                       #:decode-body? #f)))
                 (response-code response)))
             #:times 10
             #:delay 5))

          (test-end))))

  (gexp->derivation "laminar-test" test))

(define %test-laminar
  (system-test
   (name "laminar")
   (description "Connect to a running Laminar server.")
   (value (run-laminar-test))))
ripts-6.0, linux-libre-6.0-pristine-source, linux-libre-6.0-source, linux-libre-headers-6.0, linux-libre-6.0): Remove variables. * gnu/packages/aux-files/linux-libre/6.0-arm.conf, gnu/packages/aux-files/linux-libre/6.0-arm64.conf, gnu/packages/aux-files/linux-libre/6.0-i686.conf, gnu/packages/aux-files/linux-libre/6.0-x86_64.conf: Delete files. * Makefile.am (AUX_FILES): Remove them. Leo Famulari 2023-01-08gnu: Remove linux-libre 4.9....This kernel series is no longer supported upstream: https://lkml.iu.edu/hypermail/linux/kernel/2301.0/06398.html https://www.kernel.org/category/releases.html * gnu/packages/aux-files/linux-libre/4.9-i686.conf, gnu/packages/aux-files/linux-libre/4.9-x86_64.conf: Delete files. * Makefile.am (AUX_FILES): Remove them. * gnu/packages/linux.scm (linux-libre-4.9-version, linux-libre-4.9-gnu-revision, deblob-scripts-4.9, linux-libre-4.9-pristine-source, linux-libre-4.9-source, linux-libre-headers-4.9, linux-libre-4.9): Remove variables. * gnu/tests/base.scm (%test-linux-libre-4.9): Likewise. Leo Famulari 2023-01-03gnu: Add linux-libre 6.1....* gnu/packages/linux.scm (linux-libre-6.1-version, linux-libre-6.1-gnu-revision, deblob-scripts-6.1, linux-libre-6.1-source, linux-libre-headers-6.1, linux-libre-6.1): New variables. * gnu/packages/aux-files/linux-libre/6.1-arm.conf, gnu/packages/aux-files/linux-libre/6.1-arm64.conf, gnu/packages/aux-files/linux-libre/6.1-i686.conf, gnu/packages/aux-files/linux-libre/6.1-x86_64.conf: New files. * Makefile.am (AUX_FILES): Add them. Leo Famulari 2022-11-08gnu: Remove linux-libre 5.19....* gnu/packages/linux.scm (linux-libre-5.19-version, linux-libre-5.19-gnu-revision, deblob-scripts-5.19, linux-libre-5.19-pristine-source, linux-libre-5.19-source, linux-libre-headers-5.19, linux-libre-5.19): Remove variables. * gnu/packages/aux-files/linux-libre/5.19-arm.conf, gnu/packages/aux-files/linux-libre/5.19-arm64.conf, gnu/packages/aux-files/linux-libre/5.19-i686.conf, gnu/packages/aux-files/linux-libre/5.19-x86_64.conf: Delete files. * Makefile.am (AUX_FILES): Remove them. Leo Famulari 2022-11-02gnu: linux-libre: Add linux-libre 6.0.6....* gnu/packages/linux.scm (linux-libre-6.0-version, linux-libre-6.0-pristine-source, linux-libre-6.0-source, linux-libre-headers-6.0, linux-libre-6.0): New variables. * gnu/packages/aux-files/linux-libre/6.0-arm.conf, gnu/packages/aux-files/linux-libre/6.0-arm64.conf, gnu/packages/aux-files/linux-libre/6.0-i686.conf, gnu/packages/aux-files/linux-libre/6.0-x86_64.conf: New files. * Makefile.am (AUX_FILES): Add them. Leo Famulari 2022-09-06gnu: Remove linux-libre 5.18....* gnu/packages/linux.scm (linux-libre-5.18-version, linux-libre-5.18-gnu-revision, deblob-scripts-5.18, linux-libre-5.18-pristine-source, linux-libre-5.18-source, linux-libre-headers-5.18, linux-libre-5.18): Remove variables. * gnu/packages/aux-files/linux-libre/5.18-arm.conf, gnu/packages/aux-files/linux-libre/5.18-arm64.conf, gnu/packages/aux-files/linux-libre/5.18-i686.conf, gnu/packages/aux-files/linux-libre/5.18-x86_64.conf: Delete files. * Makefile.am (AUX_FILES): Remove them. Leo Famulari 2022-08-31gnu: Add linux-libre 5.19....* gnu/packages/linux.scm (linux-libre-5.19-version, linux-libre-5.19-gnu-revision, deblob-scripts-5.19, linux-libre-5.19-pristine-source, linux-libre-5.19-source, linux-libre-headers-5.19, linux-libre-5.19): New variables. * gnu/packages/aux-files/linux-libre/5.19-arm.conf, gnu/packages/aux-files/linux-libre/5.19-arm64.conf, gnu/packages/aux-files/linux-libre/5.19-i686.conf, gnu/packages/aux-files/linux-libre/5.19-x86_64.conf: New files. * Makefile.am (AUX_FILES): Add them. Leo Famulari 2022-06-29gnu: linux-libre: Enable the AMD HSA driver....* gnu/packages/aux-files/linux-libre/5.10-arm64.conf, gnu/packages/aux-files/linux-libre/5.10-x86_64.conf, gnu/packages/aux-files/linux-libre/5.15-arm64.conf, gnu/packages/aux-files/linux-libre/5.15-x86_64.conf, gnu/packages/aux-files/linux-libre/5.18-arm64.conf, gnu/packages/aux-files/linux-libre/5.18-x86_64.conf, gnu/packages/aux-files/linux-libre/5.4-arm64.conf, gnu/packages/aux-files/linux-libre/5.4-x86_64.conf: Enable the AMD Heterogeneous System Architecture (HSA) driver. Signed-off-by: Leo Famulari <leo@famulari.name> John Kehayias 2022-06-29gnu: Remove linux-libre 5.17....This kernel series is no longer supported upstream. * gnu/packages/linux.scm (linux-libre-5.17-version, linux-libre-5.17-gnu-revision, deblob-scripts-5.17, linux-libre-5.17-pristine-source, linux-libre-5.17-source, linux-libre-headers-5.17, linux-libre-5.17): Remove variables. * gnu/packages/aux-files/linux-libre/5.17-arm.conf, gnu/packages/aux-files/linux-libre/5.17-arm64.conf, gnu/packages/aux-files/linux-libre/5.17-i686.conf, gnu/packages/aux-files/linux-libre/5.17-x86_64.conf: Delete files. * Makefile.am (AUX_FILES): Remove them. Leo Famulari 2022-06-29gnu: Add linux-libre 5.18....* gnu/packages/linux.scm (linux-libre-5.18-version, linux-libre-5.18-gnu-revision, deblob-scripts-5.18, linux-libre-5.18-pristine-source, linux-libre-5.18-source, linux-libre-headers-5.18, linux-libre-5.18): New variables. * gnu/packages/aux-files/linux-libre/5.18-arm.conf, gnu/packages/aux-files/linux-libre/5.18-arm64.conf, gnu/packages/aux-files/linux-libre/5.18-i686.conf, gnu/packages/aux-files/linux-libre/5.18-x86_64.conf: New files. * Makefile.am (AUX_FILES): Add them. Leo Famulari 2022-05-01gnu: Remove linux-libre@4.4 configuration files....This follows up on commit bc54947410689cc752ca962b0b4d27fa799265bf. * gnu/packages/aux-files/linux-libre/4.4-i686.conf, gnu/packages/aux-files/linux-libre/4.4-x86_64.conf: Delete files. * Makefile.am (AUX_FILES): Remove them. Tobias Geerinckx-Rice 2022-04-23gnu: Remove linux-libre 5.16....This kernel series is no longer supported upstream. * gnu/packages/linux.scm (linux-libre-5.16-version, linux-libre-5.16-gnu-revision, deblob-scripts-5.16, linux-libre-5.16-source, linux-libre-headers-5.16, linux-libre-5.16): Remove variables. (linux-libre-version, linux-libre-gnu-revision, linux-libre-pristine-source, linux-libre-source, linux-libre, linux-libre-with-bpf): Use linux-libre 5.17. * gnu/packages/aux-files/linux-libre/5.16-arm.conf, gnu/packages/aux-files/linux-libre/5.16-arm64.conf, gnu/packages/aux-files/linux-libre/5.16-i686.conf, gnu/packages/aux-files/linux-libre/5.16-x86_64.conf: Delete files. * Makefile.am (AUX_FILES): Remove them. Leo Famulari 2022-04-14gnu: Update linux-libre 5.17 configuration files....This option that adds new hardware support appeared after the 5.17 release. * gnu/packages/aux-files/linux-libre/5.17-arm.conf, gnu/packages/aux-files/linux-libre/5.17-arm64.conf, gnu/packages/aux-files/linux-libre/5.17-i686.conf, gnu/packages/aux-files/linux-libre/5.17-x86_64.conf: Enable support for Realtek Ethernet switch chips. Leo Famulari 2022-03-26gnu: linux-libre: Add linux-libre 5.17....* gnu/packages/linux.scm (linux-libre-5.17-version, linux-libre-5.17-gnu-revision, deblob-scripts-5.17, linux-libre-5.17-pristine-source, linux-libre-5.17-source, linux-libre-headers-5.17, linux-libre-5.17): New variables. * gnu/packages/aux-files/linux-libre/5.17-arm.conf, gnu/packages/aux-files/linux-libre/5.17-arm64.conf, gnu/packages/aux-files/linux-libre/5.17-i686.conf, gnu/packages/aux-files/linux-libre/5.17-x86_64.conf: New files. * Makefile.am (AUX_FILES): Add them. Leo Famulari 2022-03-13gnu: linux-libre: Enable UTF-8 normalization and casefolding....Without this it is apparently impossible to mount file systems with the feature, which apparently some distributions do by default now. podiki[m]> I have an sdcard that was formatted with ext4 casefold [by Arch Linux], cannot be mounted * gnu/packages/aux-files/linux-libre/5.10-arm.conf, gnu/packages/aux-files/linux-libre/5.10-arm64.conf, gnu/packages/aux-files/linux-libre/5.10-i686.conf, gnu/packages/aux-files/linux-libre/5.10-x86_64.conf, gnu/packages/aux-files/linux-libre/5.15-arm.conf, gnu/packages/aux-files/linux-libre/5.15-arm64.conf, gnu/packages/aux-files/linux-libre/5.15-i686.conf, gnu/packages/aux-files/linux-libre/5.15-x86_64.conf, gnu/packages/aux-files/linux-libre/5.16-arm.conf, gnu/packages/aux-files/linux-libre/5.16-arm64.conf, gnu/packages/aux-files/linux-libre/5.16-i686.conf, gnu/packages/aux-files/linux-libre/5.16-x86_64.conf, gnu/packages/aux-files/linux-libre/5.4-arm.conf, gnu/packages/aux-files/linux-libre/5.4-arm64.conf, gnu/packages/aux-files/linux-libre/5.4-i686.conf, gnu/packages/aux-files/linux-libre/5.4-x86_64.conf: Set CONFIG_UNICODE=y. Tobias Geerinckx-Rice 2022-02-09Revert kernel modules changes to support the Coreboot framebuffer...These changes broke the creation of the 'linux-modules-database' for all kernel series besides 5.15, 5.4, and 5.10, like this: ------ gnu/build/linux-modules.scm:257:5: kernel module not found "framebuffer_coreboot" "/gnu/store/yff45fr6q93mw44zdql9ffr95zcvwxcn-linux-libre-4.9.299/lib/modules" ------ We should support the coreboot framebuffer, but we need to test that change more completely before deploying it. This effectively reverts the following commits: 1dfe8c372163d481ebebb97dd3b4cafa49906b28 "gnu: linux-libre: Build simplefb into all x86{,_64} kernels." bc09e7ab569d5306ce99c5525150695c9d539ef0 "gnu: linux-libre: Support the Coreboot framebuffer." Fixes <https://issues.guix.gnu.org/52667> "System reconfiguration fails to build linux-modules.drv". Leo Famulari 2022-02-07gnu: linux-libre: Build the snd-emu10k1 kernel module....Add the CONFIG_SND_EMU10K1=m and CONFIG_SND_EMU10K1_SEQ=m kernel options to all of our x86 and ARM configurations. The change automated via: $ git grep -rl CONFIG_SND_INDIGODJX | xargs grep -rL CONFIG_SND_EMU10K1=m \ | xargs sed '/CONFIG_SND_INDIGODJX=m/a\ CONFIG_SND_EMU10K1=m\nCONFIG_SND_EMU10K1_SEQ=m' -i Maxim Cournoyer 2022-02-07gnu: linux-libre: Enable CONFIG_ZONE_DMA in all configs....ZONE_DMA is still used by some kernel drivers such as older sound and network cards; it was already enabled on ARM and for some i686 kernels. Enable it everywhere for consistency. The change was automated with: $ git grep -rl CONFIG_ZONE_DMA | \ xargs sed 's/# CONFIG_ZONE_DMA is not set/CONFIG_ZONE_DMA=y/' -i * gnu/packages/aux-files/linux-libre/4.14-x86_64.conf: Enable CONFIG_ZONE_DMA. * gnu/packages/aux-files/linux-libre/4.19-x86_64.conf: Likewise. * gnu/packages/aux-files/linux-libre/4.4-x86_64.conf: Likewise. * gnu/packages/aux-files/linux-libre/4.9-x86_64.conf: Likewise. * gnu/packages/aux-files/linux-libre/5.10-i686.conf: Likewise. * gnu/packages/aux-files/linux-libre/5.10-x86_64.conf: Likewise. * gnu/packages/aux-files/linux-libre/5.15-i686.conf: Likewise. * gnu/packages/aux-files/linux-libre/5.15-x86_64.conf: Likewise. * gnu/packages/aux-files/linux-libre/5.16-i686.conf: Likewise. * gnu/packages/aux-files/linux-libre/5.16-x86_64.conf: Likewise. * gnu/packages/aux-files/linux-libre/5.4-x86_64.conf: Likewise. Maxim Cournoyer 2022-01-26gnu: Add linux-libre 5.16.2....* gnu/packages/aux-files/linux-libre/5.16-arm.conf, gnu/packages/aux-files/linux-libre/5.16-arm64.conf, gnu/packages/aux-files/linux-libre/5.16-i686.conf, gnu/packages/aux-files/linux-libre/5.16-x86_64.conf : New files. * Makefile.am (AUX_FILES): Add them. * gnu/packages/linux.scm (linux-libre-5.16-version, linux-libre-5.16-gnu-revision, deblob-scripts-5.16, linux-libre-5.16-pristine-source, linux-libre-5.16-source, linux-libre-headers-5.16, linux-libre-5.16): New variables. Leo Famulari 2022-01-18gnu: linux-libre: Include pinctrl driver for Cherryview / Braswell hardware....Fixes <https://issues.guix.gnu.org/53329>, "Integrated keyboard doesn't work (Lenovo N22)". Reported by Jack Ridehalgh <jack@ridehalgh.uk>. * gnu/packages/aux-files/linux-libre/5.15-i686.conf, gnu/packages/aux-files/linux-libre/5.15-x86_64.conf: Set CONFIG_PINCTRL_CHERRYVIEW=y. Leo Famulari 2022-01-11gnu: Fix typo in kernel configs....This option defaults to "N", so this fix does not change the effective kernel configuration. * gnu/packages/aux-files/linux-libre/5.15-i686.conf, nu/packages/aux-files/linux-libre/5.15-x86_64.conf: Replace "unset" with "not set". Leo Famulari 2021-12-25gnu: linux-libre: Build simplefb into all x86{,_64} kernels....This attempts to mitigate <https://issues.guix.gnu.org/52667>. It makes linux-libre@5.15 consistent with older versions which do not support a modular simplefb, allowing a single %base-initrd-modules simple list for all of them. Unlike CONFIG_FB_SIMPLE=m, CONFIG_FB_SIMPLE=y conflicts with CONFIG_DRM_SIMPLEDRM, so the latter is now disabled. Let us hope it is not missed. * gnu/packages/aux-files/linux-libre/5.15-i686.conf, gnu/packages/aux-files/linux-libre/5.15-x86_64.conf: Unset CONFIG_DRM_SIMPLEDRM to build in CONFIG_FB_SIMPLE=y. * gnu/system/linux-initrd.scm (default-initrd-modules): Remove "simplefb". Tobias Geerinckx-Rice 2021-12-16gnu: linux-libre: Support the Coreboot framebuffer....Without this, the kernel cannot write to the display until the full-featured driver module (often i915) is loaded from the root file system. If the root file system is encrypted, the initrd's passphrase prompt won't make it to the screen, and the fully responsive system will appear frozen whilst waiting for user input. * gnu/packages/aux-files/linux-libre/4.4-i686.conf, gnu/packages/aux-files/linux-libre/4.4-x86_64.conf, gnu/packages/aux-files/linux-libre/4.14-i686.conf, gnu/packages/aux-files/linux-libre/4.14-x86_64.conf, gnu/packages/aux-files/linux-libre/4.19-i686.conf, gnu/packages/aux-files/linux-libre/4.19-x86_64.conf, gnu/packages/aux-files/linux-libre/5.4-i686.conf, gnu/packages/aux-files/linux-libre/5.4-x86_64.conf, gnu/packages/aux-files/linux-libre/5.10-i686.conf, gnu/packages/aux-files/linux-libre/5.10-x86_64.conf, gnu/packages/aux-files/linux-libre/5.15-i686.conf, gnu/packages/aux-files/linux-libre/5.15-x86_64.conf: Mark simple framebuffers as generic system ones and enable ‘Google’ firmware drivers to enable Coreboot table support and its dependent framebuffer driver module. * gnu/system/linux-initrd.scm (default-initrd-modules): Add the framebuffer_coreboot and simplefb modules on x86 systems. Tobias Geerinckx-Rice via Guix-patches via 2021-11-26gnu: Remove linux-libre 5.14....* gnu/packages/linux.scm (linux-libre-5.14-version, linux-libre-5.14-gnu-revision, deblob-scripts-5.14, linux-libre-5.14-pristine-source, linux-libre-5.14-source, linux-libre-headers-5.14, linux-libre-5.14): Remove variables. * gnu/packages/aux-files/linux-libre/5.14-arm.conf, gnu/packages/aux-files/linux-libre/5.14-arm64.conf, gnu/packages/aux-files/linux-libre/5.14-i686.conf, gnu/packages/aux-files/linux-libre/5.14-x86_64.conf: Delete files. * Makefile.am (AUX_FILES): Remove them. Leo Famulari 2021-11-26gnu: Add linux-libre 5.15.5....* gnu/packages/linux.scm (linux-libre-5.15-version, linux-libre-5.15-gnu-revision, deblob-scripts-5.15, linux-libre-5.15-pristine-source, linux-libre-5.15-source, linux-libre-headers-5.15, linux-libre-5.15): New variables. * gnu/packages/aux-files/linux-libre/5.15-arm.conf, gnu/packages/aux-files/linux-libre/5.15-arm64.conf, gnu/packages/aux-files/linux-libre/5.15-i686.conf, gnu/packages/aux-files/linux-libre/5.15-x86_64.conf: New files. * Makefile.am (AUX_FILES): Add them Leo Famulari