guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[no subject]


From: Ludovic Courtès
Date: Tue, 9 May 2023 10:28:17 -0400 (EDT)

branch: master
commit 579f674656f21e9e8da5ced83adfe809ca0c1afc
Author: Ludovic Courtès <ludo@gnu.org>
AuthorDate: Tue May 9 15:13:39 2023 +0200

    maint: Update Guix package definition.
    
    * build-aux/guix.scm: Rename to...
    * build-aux/guix/cuirass-package.scm: ... this.  Turn into a module and
    update package definition.
    * guix.scm: Add symlink.
    * Makefile.am (EXTRA_DIST): Update accordingly.
---
 Makefile.am                        |  17 ++--
 README                             |   2 +-
 build-aux/guix.scm                 |  95 ---------------------
 build-aux/guix/cuirass-package.scm | 163 +++++++++++++++++++++++++++++++++++++
 guix.scm                           |   1 +
 5 files changed, 174 insertions(+), 104 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index a40a76d..28796b5 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -2,7 +2,7 @@
 
 # Copyright © 1995-2016 Free Software Foundation, Inc.
 # Copyright © 2016, 2017 Mathieu Lirzin <mthl@gnu.org>
-# Copyright © 2018 Ludovic Courtès <ludo@gnu.org>
+# Copyright © 2018, 2023 Ludovic Courtès <ludo@gnu.org>
 # Copyright © 2018 Clément Lassieur <clement@lassieur.org>
 # Copyright © 2018 Tatiana Sholokhova <tanja201396@gmail.com>
 # Copyright © 2020 Mathieu Othacehe <othacehe@gnu.org>
@@ -193,13 +193,14 @@ CLEANFILES =                                      \
 ## Distribution.  ##
 ## -------------- ##
 
-EXTRA_DIST = \
-  .dir-locals.el \
-  bin/cuirass.in \
-  bootstrap \
-  build-aux/guix.scm \
-  src/cuirass/config.scm.in \
-  etc/cuirass-remote-worker.service.in \
+EXTRA_DIST =                                   \
+  .dir-locals.el                               \
+  bin/cuirass.in                               \
+  bootstrap                                    \
+  guix.scm                                     \
+  build-aux/guix/cuirass-package.scm           \
+  src/cuirass/config.scm.in                    \
+  etc/cuirass-remote-worker.service.in         \
   $(TESTS)
 
 dist-hook: gen-ChangeLog
diff --git a/README b/README
index 0172dc4..abc213e 100644
--- a/README
+++ b/README
@@ -24,7 +24,7 @@ A convenient way to install those dependencies is to install 
Guix and execute
 the following command:
 
 #+BEGIN_EXAMPLE
-  guix environment cuirass
+  guix shell -CPNW --expose=/var/run/dbus --expose=/var/log/guix/drvs
 #+END_EXAMPLE
 
 This will build and enter an environment which provides all the necessary
diff --git a/build-aux/guix.scm b/build-aux/guix.scm
deleted file mode 100644
index b03f173..0000000
--- a/build-aux/guix.scm
+++ /dev/null
@@ -1,95 +0,0 @@
-;;;; guix.scm -- Guix package definition
-;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
-;;; Copyright © 2016, 2017 Mathieu Lirzin <mthl@gnu.org>
-;;;
-;;; This file is part of Cuirass.
-;;;
-;;; Cuirass 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.
-;;;
-;;; Cuirass 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 Cuirass.  If not, see <http://www.gnu.org/licenses/>.
-
-(use-modules (ice-9 popen)
-             (ice-9 rdelim)
-             (gnu)
-             (guix)
-             (srfi srfi-1))
-
-(define (keep-cuirass-file? file stat)
-  ;; Return #t if FILE in Cuirass repository must be kept, #f otherwise. FILE
-  ;; is an absolute file name and STAT is the result of 'lstat' applied to
-  ;; FILE.
-  (not (or (any (lambda (str) (string-contains file str))
-                '(".git" "autom4te" "Makefile.in" ".go" ".log"
-                  "stamp-vti" ".dirstamp"))
-           (any (lambda (str) (string-suffix? str file))
-                '("trs""configure" "Makefile" "config.status" "pre-inst-env"
-                  "aclocal.m4" "bin/cuirass" "bin/evaluate" "config.cache"
-                  "guix.scm")))))
-
-(define %aux-dir
-  (current-source-directory))
-
-(define %srcdir
-  (dirname %aux-dir))
-
-(define (git-version-gen)
-  ;; Return a string containing Cuirass version number.
-  (let* ((cmd  "git-version-gen .tarball-version")
-         (port (open-input-pipe (string-append %aux-dir "/" cmd)))
-         (str  (read-line port)))
-    (close-pipe port)
-    str))
-
-(define (spec+package-list spec)
-  (list spec (specification->package spec)))
-
-(package
-  (inherit (specification->package "cuirass"))
-  (version (git-version-gen))
-  (source (local-file %srcdir #:recursive? #t
-                      #:select? keep-cuirass-file?))
-  (arguments
-   '(#:phases
-     (modify-phases %standard-phases
-       (add-before 'configure 'bootstrap
-         (lambda _ (zero? (system* "sh" "bootstrap"))))
-       (add-after 'install 'wrap-program
-         (lambda* (#:key inputs outputs #:allow-other-keys)
-           ;; Wrap the 'cuirass' command to refer to the right modules.
-           (let* ((out    (assoc-ref outputs "out"))
-                  (json   (assoc-ref inputs "guile-json"))
-                  (squee  (assoc-ref inputs "guile-squee"))
-                  (zlib   (assoc-ref inputs "guile-zlib"))
-                  (guix   (assoc-ref inputs "guix"))
-                  (mods   (string-append json "/share/guile/site/3.0:"
-                                         squee "/share/guile/site/3.0:"
-                                         zlib "/share/guile/site/3.0:"
-                                         guix "/share/guile/site/3.0")))
-             (wrap-program (string-append out "/bin/cuirass")
-               `("GUILE_LOAD_PATH" ":" prefix (,mods))
-               `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,mods)))))))))
-  (inputs
-   (map spec+package-list
-        '("guile"
-          "guile-fibers"
-          "guile-json"
-          "guile-squee"
-          "guile-git"
-          "guile-zlib"
-          "guix")))
-  (native-inputs
-   (map spec+package-list
-        '("autoconf"
-          "automake"
-          "bash"
-          "pkg-config"
-          "texinfo"))))
diff --git a/build-aux/guix/cuirass-package.scm 
b/build-aux/guix/cuirass-package.scm
new file mode 100644
index 0000000..dad0da0
--- /dev/null
+++ b/build-aux/guix/cuirass-package.scm
@@ -0,0 +1,163 @@
+;;;; guix.scm -- Guix package definition
+;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2016, 2017 Mathieu Lirzin <mthl@gnu.org>
+;;; Copyright © 2023 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; This file is part of Cuirass.
+;;;
+;;; Cuirass 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.
+;;;
+;;; Cuirass 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 Cuirass.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (cuirass-package)
+  #:use-module (guix)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix git-download)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix search-paths)
+  #:use-module (gnu packages autotools)
+  #:use-module (gnu packages databases)
+  #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages guile)
+  #:use-module (gnu packages guile-xyz)
+  #:use-module (gnu packages mail)
+  #:use-module (gnu packages package-management)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages texinfo)
+  #:use-module (gnu packages tls))
+
+(define source-checkout
+  (let ((vcs-file? (or (git-predicate
+                        (string-append (current-source-directory)
+                                       "/../.."))
+                       (const #t))))
+    (local-file "../.." "cuirass-checkout"
+                #:recursive? #t
+                #:select? vcs-file?)))
+
+(define %cuirass-version "1.99.99-git")
+
+(define-public cuirass
+  (package
+    (name "cuirass")
+    (version %cuirass-version)
+    (source source-checkout)
+    (build-system gnu-build-system)
+    (arguments
+     (list #:modules '((guix build utils)
+                       (guix build gnu-build-system)
+                       (ice-9 rdelim)
+                       (ice-9 popen))
+           #:configure-flags #~'("--localstatedir=/var") ;for /var/log/cuirass
+           #:parallel-tests? #f
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-before 'bootstrap 'fix-version-gen
+                 (lambda _
+                   (patch-shebang "build-aux/git-version-gen")
+
+                   (call-with-output-file ".tarball-version"
+                     (lambda (port)
+                       (display #$(package-version this-package) port)))))
+               (add-before 'check 'set-PATH-for-tests
+                 (lambda* (#:key inputs #:allow-other-keys)
+                   (let ((pg (assoc-ref inputs "ephemeralpg"))
+                         (path (getenv "PATH")))
+                     (setenv "PATH" (string-append pg "/bin:" path)))))
+               ;; Disable the remote tests that require a Guix daemon 
connection.
+               (add-before 'check 'disable-remote-tests
+                 (lambda _
+                   (substitute* "Makefile.am"
+                     (("tests/remote.scm") ""))))
+               (add-after 'install 'wrap-program
+                 (lambda* (#:key inputs outputs #:allow-other-keys)
+                   ;; Wrap the 'cuirass' command to refer to the right modules.
+                   (let* ((out    (assoc-ref outputs "out"))
+                          (avahi  (assoc-ref inputs "guile-avahi"))
+                          (gcrypt (assoc-ref inputs "guile-gcrypt"))
+                          (json   (assoc-ref inputs "guile-json"))
+                          (zmq    (assoc-ref inputs "guile-simple-zmq"))
+                          (squee  (assoc-ref inputs "guile-squee"))
+                          (git    (assoc-ref inputs "guile-git"))
+                          (bytes  (assoc-ref inputs "guile-bytestructures"))
+                          (fibers (assoc-ref inputs "guile-fibers"))
+                          (zlib   (assoc-ref inputs "guile-zlib"))
+                          (matd   (assoc-ref inputs "guile-mastodon"))
+                          (tls    (assoc-ref inputs "guile-gnutls"))
+                          (mail   (assoc-ref inputs "mailutils"))
+                          (guix   (assoc-ref inputs "guix"))
+                          (deps   (list avahi gcrypt json zmq squee git bytes
+                                        fibers zlib matd tls mail guix))
+                          (guile  (assoc-ref inputs "guile"))
+                          (effective
+                           (read-line
+                            (open-pipe* OPEN_READ
+                                        (string-append guile "/bin/guile")
+                                        "-c" "(display (effective-version))")))
+                          (mods
+                           (string-drop-right     ;drop trailing colon
+                            (string-join deps
+                                         (string-append "/share/guile/site/"
+                                                        effective ":")
+                                         'suffix)
+                            1))
+                          (objs
+                           (string-drop-right
+                            (string-join deps
+                                         (string-append "/lib/guile/" effective
+                                                        "/site-ccache:")
+                                         'suffix)
+                            1)))
+                     ;; Make sure 'cuirass' can find the relevant Guile 
modules.
+                     (wrap-program (string-append out "/bin/cuirass")
+                       `("PATH" ":" prefix (,(string-append out "/bin")))
+                       `("GUILE_LOAD_PATH" ":" prefix (,mods))
+                       `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,objs)))))))))
+    (inputs
+     (list guile-3.0-latest
+           guile-avahi
+           guile-fibers-1.1
+           guile-gcrypt
+           guile-json-4
+           guile-simple-zmq
+           guile-squee
+           guile-git
+           guile-zlib
+           guile-mastodon
+           guile-gnutls
+           mailutils
+           ;; FIXME: this is propagated by "guile-git", but it needs to be 
among
+           ;; the inputs to add it to GUILE_LOAD_PATH.
+           guile-bytestructures
+
+           guix))
+    (native-inputs
+     (list autoconf automake pkg-config texinfo ephemeralpg))
+    (native-search-paths
+     ;; For HTTPS access, Cuirass itself honors these variables, with the
+     ;; same semantics as Git and OpenSSL (respectively).
+     (list (search-path-specification
+            (variable "GIT_SSL_CAINFO")
+            (file-type 'regular)
+            (separator #f)                        ;single entry
+            (files '("etc/ssl/certs/ca-certificates.crt")))
+           $SSL_CERT_DIR))
+    (synopsis "Continuous integration system")
+    (description
+     "Cuirass is a continuous integration tool using GNU Guix.  It is
+intended as a replacement for Hydra.")
+    (home-page "https://guix.gnu.org/cuirass/";)
+    (license license:gpl3+)))
+
+;; Return the Cuirass package that lets you build from Git, for the benefit
+;; of 'guix shell'.
+cuirass
diff --git a/guix.scm b/guix.scm
new file mode 120000
index 0000000..4b9e4c8
--- /dev/null
+++ b/guix.scm
@@ -0,0 +1 @@
+build-aux/guix/cuirass-package.scm
\ No newline at end of file



reply via email to

[Prev in Thread] Current Thread [Next in Thread]