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))))
esent in the default Guix kernel.” * gnu/packages/aux-files/linux-libre/4.14-x86_64.conf, gnu/packages/aux-files/linux-libre/4.19-x86_64.conf, gnu/packages/aux-files/linux-libre/4.9-x86_64.conf, gnu/packages/aux-files/linux-libre/5.10-x86_64.conf, gnu/packages/aux-files/linux-libre/5.12-x86_64.conf, gnu/packages/aux-files/linux-libre/5.4-x86_64.conf: Enable modular CONFIG_VMD. Tobias Geerinckx-Rice 2021-05-25guile: Leave 'scm_install_gmp_memory_functions' unchanged....Since the switch to Guile 3.0.7 using mini-GMP, we can leave 'scm_install_gmp_memory_functions' to its default value, which is to use custom memory allocators; there is no interference with users of GMP such as GnuTLS/Nettle. * gnu/packages/aux-files/guile-launcher.c (main) [!SCM_ENABLE_MINI_GMP]: Leave 'scm_install_gmp_memory_functions' unchanged. Ludovic Courtès 2021-05-22Merge branch 'master' into core-updatesMarius Bakke 2021-05-21gnu: linux-libre: Update to 5.12.5....* gnu/packages/linux.scm (linux-libre-5.11-version, deblob-scripts-5.11, linux-libre-5.11-pristine-source, linux-libre-5.11-source, linux-libre-headers-5.11, linux-libre-5.11): Remove variables. (linux-libre-version, linux-libre-pristine-source, linux-libre-source, linux-libre): Update to the 5.12 kernel series. (linux-libre-with-bpf): Update to the 5.12 kernel series. * gnu/packages/aux-files/linux-libre/5.11-arm.conf, gnu/packages/aux-files/linux-libre/5.11-arm64.conf, gnu/packages/aux-files/linux-libre/5.11-i686.conf, gnu/packages/aux-files/linux-libre/5.11-x86_64.conf: Delete files. * Makefile.am (AUX_FILES): Remove them. Leo Famulari 2021-05-09Merge branch 'master' into core-updates... Conflicts: gnu/local.mk gnu/packages/bioinformatics.scm gnu/packages/django.scm gnu/packages/gtk.scm gnu/packages/llvm.scm gnu/packages/python-web.scm gnu/packages/python.scm gnu/packages/tex.scm guix/build-system/asdf.scm guix/build/emacs-build-system.scm guix/profiles.scm Marius Bakke 2021-05-08gnu: linux-libre@5.12: Update arm64 config to support Pinebook Pro....* gnu/packages/aux-files/linux-libre/5.11-arm64.conf: Add configurations to support video, audio, USB-C and battery on Pinebook Pro. Vagrant Cascadian 2021-05-08gnu: linux-libre@5.12: Default to schedutil cpufreq governor on arm...and arm64. This has been the recommended default for arm and arm64 since v5.9 (upstream commit f259eab3ea0e7ed73db91f6358274dd3a9a27d79). * gnu/packages/aux-files/linux-libre/5.12-arm.conf, gnu/packages/aux-files/linux-libre/5.12-arm64.conf: Enable CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL, disable CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE. Vagrant Cascadian 2021-05-08gnu: Add linux-libre 5.12.2....* gnu/packages/linux.scm (linux-libre-5.12-version, deblob-scripts-5.12, linux-libre-5.12-pristine-source, linux-libre-5.12-source, linux-libre-headers-5.12, linux-libre-5.12): New variables. * gnu/packages/aux-files/linux-libre/5.12-arm.conf, gnu/packages/aux-files/linux-libre/5.12-arm64.conf, gnu/packages/aux-files/linux-libre/5.12-i686.conf, gnu/packages/aux-files/linux-libre/5.12-x86_64.conf: New files. * Makefile.am (AUX_FILES): Add them. Leo Famulari 2021-05-07gnu: linux-libre: Default to schedutil cpufreq governor on arm and arm64....This has been the recommended default for arm and arm64 since since v5.9 (upstream commit f259eab3ea0e7ed73db91f6358274dd3a9a27d79). * gnu/packages/aux-files/linux-libre/5.10-arm.conf, gnu/packages/aux-files/linux-libre/5.10-arm.conf, gnu/packages/aux-files/linux-libre/5.11-arm.conf, gnu/packages/aux-files/linux-libre/5.11-arm.conf: Enable CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL, disable CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE. Vagrant Cascadian 2021-05-06gnu: linux-libre: Update arm64 config to support Pinebook Pro....* gnu/packages/aux-files/linux-libre/5.11-arm64.conf: Add configurations to support video, audio, USB-C and battery on Pinebook Pro. Vagrant Cascadian 2021-04-16Merge remote-tracking branch 'origin/master' into core-updates... Conflicts: gnu/local.mk gnu/packages/boost.scm gnu/packages/chez.scm gnu/packages/compression.scm gnu/packages/crates-io.scm gnu/packages/docbook.scm gnu/packages/engineering.scm gnu/packages/gcc.scm gnu/packages/gl.scm gnu/packages/gtk.scm gnu/packages/nettle.scm gnu/packages/python-check.scm gnu/packages/python-xyz.scm gnu/packages/radio.scm gnu/packages/rust.scm gnu/packages/sqlite.scm guix/build-system/node.scm Efraim Flashner 2021-03-31gnu: linux-libre 5.10: Update to 5.10.27....* gnu/packages/linux.scm (linux-libre-5.10-version): Update to 5.10.27. (linux-libre-5.10-pristine-source): Update hash. * gnu/packages/aux-files/linux-libre/5.10-x86_64.conf: Update for linux-libre@5.10.27. Leo Famulari 2021-03-31gnu: linux-libre: Update to 5.11.11....* gnu/packages/linux.scm (linux-libre-5.11-version): Update to 5.11.11. (linux-libre-5.11-pristine-source): Update hash. * gnu/packages/aux-files/linux-libre/5.11-x86_64.conf: Update for linux-libre@5.11.11. Leo Famulari 2021-03-06Merge branch 'master' into core-updatesChristopher Baines 2021-02-21gnu: ungoogled-chromium: Update default preferences....* gnu/packages/aux-files/chromium/master-preferences.json: Adjust for upstream changes. Marius Bakke 2021-02-16gnu: Add linux-libre 5.11....* gnu/packages/linux.scm (linux-libre-5.11-version, deblob-scripts-5.11, linux-libre-5.11-pristine-source, linux-libre-5.11-source, linux-libre-5.11): New variables. * gnu/packages/aux-files/linux-libre/5.11-x86_64.conf, gnu/packages/aux-files/linux-libre/5.11-i686.conf, gnu/packages/aux-files/linux-libre/5.11-arm.conf, gnu/packages/aux-files/linux-libre/5.11-arm64.conf: New files. * Makefile.am (AUX_FILES): Add them. Leo Famulari 2021-02-11Merge branch 'master' into core-updatesDanny Milosavljevic 2021-02-07guile: Do not install Guile/libgc allocators for GMP....Fixes <https://bugs.gnu.org/46330>. * gnu/packages/aux-files/guile-launcher.c (main): Clear 'scm_install_gmp_memory_functions'. Ludovic Courtès 2021-02-04gnu: Update linux-libre configurations for 5.10.13....* 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: Update for 5.10.13. Leo Famulari 2021-02-03build/python: Handle FileNotFoundError exception in sanity-check.py....This exception was thrown while running the sanity-check on the python-isort package, which doesn't make use of a setuptools-based build system but rather of a PEP 517 compliant one. * gnu/packages/aux-files/python/sanity-check.py: Handle the FileNotFoundError whe attempting to read the 'top_level.txt' metadata file of the package. Remove extraneous 'continue' statement. Maxim Cournoyer 2021-02-03gnu: Remove leftover kernel configurations for linux-libre 5.9....This is a followup to commit 8727870ff4e4d5016431985a888f3ca589d81e02. * gnu/packages/aux-files/linux-libre/5.9-arm.conf, gnu/packages/aux-files/linux-libre/5.9-arm64.conf, gnu/packages/aux-files/linux-libre/5.9-i686.conf, gnu/packages/aux-files/linux-libre/5.9-x86_64.conf: Delete files. * Makefile.am (AUX_FILES): Remove them. Leo Famulari 2021-02-01build/python: Add a sanity check phase....Add a new phase validating the usability of installed Python packages. * gnu/packages/aux-files/python/sanity-check.py: New file. * Makefile.am (AUX_FILES): Register it. * guix/build-system/python.scm (sanity-check.py): New variable. (lower): Add the script as an implicit input. * guix/build/python-build-system.scm: Remove trailing #t. (sanity-check): New phase. (%standard-phases): Use it. * tests/builders.scm: (make-python-dummy) (dummy-ok, dummy-dummy-nosetuptools, dummy-fail-requirements) (dummy-fail-import, dummy-fail-console-script): New variables. ("python-build-system: dummy-ok") ("python-build-system: dummy-dummy-nosetuptools") ("python-build-system: dummy-fail-requirements") ("python-build-system: dummy-fail-import") ("python-build-system: dummy-fail-console-script"): Add tests. Lars-Dominik Braun 2021-02-01gnu: python: Replace PYTHONPATH by GUIX_PYTHONPATH....Using PYTHONPATH as a mean to discover the Python packages had the following issues: 1. It is not versioned, so different versions of Python would clash if installed in a shared profile. 2. It would interfere with the host Python site on foreign distributions, sometimes preventing a a user to login their GDM session (!). 3. It would take precedence over user installed Python packages installed through pip. 4. It would leak into Python virtualenvs, which are supposed to create isolated Python environments. This changes fixes the above issues by making use of a sitecustomize.py module. The newly introduced GUIX_PYTHONPATH environment variable is read from the environment, filtered for the current Python version of the interpreter, and spliced in 'sys.path' just before Python's own site location, which provides the expected behavior. * gnu/packages/aux-files/python/sitecustomize.py: New file. * Makefile.am: Register it. * gnu/packages/python.scm (customize-site) (guix-pythonpath-search-path): New procedures. (python-2.7)[phases]{install-sitecustomize.py}: New phase. [native-inputs]{sitecustomize.py}: New input. [native-search-paths]: Replace PYTHONPATH with GUIX_PYTHONPATH. (python-3.9)[native-search-paths]: Likewise. [phases]{install-sitecustomize}: Override with correct version. [native-search-paths]: Replace PYTHONPATH with GUIX_PYTHONPATH. * gnu/packages/commencement.scm (python-boot0): [phases]{install-sitecustomize}: Likewise. [native-inputs]{sitecustomize.py}: New input. [native-search-paths]: Replace PYTHONPATH with GUIX_PYTHONPATH. * guix/build/python-build-system.scm (site-packages): Do not add a trailing '/'. squash! gnu: python: Replace PYTHONPATH by GUIX_PYTHONPATH. Maxim Cournoyer 2020-12-20gnu: vim: Automatically find vim plugins....* gnu/packages/vim.scm (vim)[arguments]: Add new 'install-guix.vim phase to install vendor specific vimrc. * gnu/packages/aux-files/guix.vim: New file. * Makefile.am (AUX_FILES): Register it. Efraim Flashner 2020-12-19gnu: linux-libre: Update to 5.10.1....* 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: New files. * Makefile.am (AUX_FILES): Add them. * gnu/packages/linux.scm (linux-libre-5.10-version, deblob-scripts-5.10, linux-libre-5.10-pristine-source, linux-libre-5.10-source, linux-libre-headers-5.10, linux-libre-5.10): New variables. (linux-libre-version, linux-libre-pristine-source, linux-libre-source, linux-libre, linux-libre-with-bpf): Update to 5.10.1. Leo Famulari 2020-12-11guix: 'guile' executable ignores GUILE_LOAD_PATH during startup....When starting the 'guix' command, this ensures Guile modules are immediately found instead of being search for in other directories. This reduces the number of 'stat' calls during startup when GUILE_LOAD_PATH is set to (almost) that of "env -i $(type -P guix)". * gnu/packages/aux-files/guile-launcher.c (load_path) (load_compiled_path): New variables. (inner_main): Restore GUILE_LOAD_PATH and GUILE_LOAD_COMPILED_PATH and set %load-path and %load-compiled-path accordingly. (main): Save GUILE_LOAD_PATH and GUILE_LOAD_COMPILED_PATH and unset them. Ludovic Courtès