aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/forge.skb3
-rw-r--r--guix/forge/fcgiwrap.scm5
-rw-r--r--guix/forge/forge.scm43
-rw-r--r--guix/forge/guile-git.scm14
-rw-r--r--guix/forge/gunicorn.scm5
5 files changed, 40 insertions, 30 deletions
diff --git a/doc/forge.skb b/doc/forge.skb
index d62336a..2538401 100644
--- a/doc/forge.skb
+++ b/doc/forge.skb
@@ -557,7 +557,8 @@ gunicorn is run in]))))))
[Its value]))
(record-documentation "guix/forge/forge.scm" '<forge-configuration>
(record-field "web-domain"
- [Domain name to serve forge on])
+ [Optional domain name on which to serve project listing and
+tissue-powered websites])
(record-field "projects"
[List of ,(record-ref "<forge-project>") objects describing
projects managed by guix-forge]))
diff --git a/guix/forge/fcgiwrap.scm b/guix/forge/fcgiwrap.scm
index f320223..f75fa5f 100644
--- a/guix/forge/fcgiwrap.scm
+++ b/guix/forge/fcgiwrap.scm
@@ -1,5 +1,5 @@
;;; guix-forge --- Guix software forge meta-service
-;;; Copyright © 2023, 2024 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2023–2025 Arun Isaac <arunisaac@systemreboot.net>
;;;
;;; This file is part of guix-forge.
;;;
@@ -74,7 +74,8 @@
(define (fcgiwrap-activation config)
(with-imported-modules '((guix build utils))
#~(begin
- (use-modules (guix build utils))
+ (use-modules (guix build utils)
+ (ice-9 match))
;; Create socket directories and set ownership.
(for-each (match-lambda
diff --git a/guix/forge/forge.scm b/guix/forge/forge.scm
index 09f92c9..cfe8337 100644
--- a/guix/forge/forge.scm
+++ b/guix/forge/forge.scm
@@ -105,7 +105,8 @@
(define-record-type* <forge-configuration>
forge-configuration make-forge-configuration
forge-configuration?
- (web-domain forge-configuration-web-domain)
+ (web-domain forge-configuration-web-domain
+ (default #f))
(projects forge-configuration-projects
(default '())))
@@ -463,22 +464,27 @@ forge configuration @var{config}."
(root website-directory))))
(forge-configuration-projects config)))
-(define (forge-tissue-host config)
- "Return @code{<tissue-host>} object for forge configuration
+(define (forge-tissue-hosts config)
+ "Return list of @code{<tissue-host>} objects for forge configuration
@var{config}."
- (tissue-host
- (name (forge-configuration-web-domain config))
- (projects
- (filter-map (lambda (project)
- (and (forge-project-tissue? project)
- (tissue-project
- (name (forge-project-name project))
- ;; The laminar user must own the host state so
- ;; that it can run tissue pull.
- (user "laminar")
- (upstream-repository
- (forge-project-repository project)))))
- (forge-configuration-projects config)))))
+ (match-record config <forge-configuration>
+ (web-domain projects)
+ (if web-domain
+ (list (tissue-host
+ (name web-domain)
+ (projects
+ (filter-map (lambda (project)
+ (and (forge-project-tissue? project)
+ (tissue-project
+ (name (forge-project-name project))
+ ;; The laminar user must own the
+ ;; host state so that it can run
+ ;; tissue pull.
+ (user "laminar")
+ (upstream-repository
+ (forge-project-repository project)))))
+ projects))))
+ (list))))
(define (forge-ci-jobs config)
"Return list of CI jobs for forge configuration @var{config}. Each
@@ -572,7 +578,7 @@ value is a list of @code{<webhook-hook>} objects."
(service-extension forge-nginx-service-type
forge-nginx-server-blocks)
(service-extension tissue-service-type
- (compose list forge-tissue-host))
+ forge-tissue-hosts)
(service-extension forge-laminar-service-type
forge-ci-jobs+contexts+groups)
;; TODO: Run CI job only if there are new commits
@@ -586,4 +592,5 @@ value is a list of @code{<webhook-hook>} objects."
(forge-configuration
(inherit config)
(projects (append (forge-configuration-projects config)
- projects)))))))
+ projects)))))
+ (default-value (forge-configuration))))
diff --git a/guix/forge/guile-git.scm b/guix/forge/guile-git.scm
index f582b7d..9315524 100644
--- a/guix/forge/guile-git.scm
+++ b/guix/forge/guile-git.scm
@@ -1,5 +1,5 @@
;;; guix-forge --- Guix software forge meta-service
-;;; Copyright © 2023 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2023, 2025 Arun Isaac <arunisaac@systemreboot.net>
;;;
;;; This file is part of guix-forge.
;;;
@@ -19,7 +19,7 @@
(define-module (forge guile-git)
#:use-module ((gnu packages guile) #:select (guile-git) #:prefix guix:)
- #:use-module ((gnu packages version-control) #:select (libgit2-1.3) #:prefix guix:)
+ #:use-module ((gnu packages version-control) #:select (libgit2-1.9) #:prefix guix:)
#:use-module (guix gexp)
#:use-module (guix packages)
#:use-module (guix utils))
@@ -27,17 +27,17 @@
;; Use a patched libgit2 until there is a way to disable repository
;; ownership validation using the API. See
;; https://issues.guix.gnu.org/55399
-(define libgit2-1.3
+(define libgit2-1.9
(package
- (inherit guix:libgit2-1.3)
+ (inherit guix:libgit2-1.9)
(name "libgit2")
(arguments
- (substitute-keyword-arguments (package-arguments guix:libgit2-1.3)
+ (substitute-keyword-arguments (package-arguments guix:libgit2-1.9)
((#:phases phases #~%standard-phases)
#~(modify-phases #$phases
(add-after 'unpack 'disable-ownership-validation
(lambda _
- (substitute* "src/repository.c"
+ (substitute* "src/libgit2/repository.c"
(("git_repository__validate_ownership = true")
"git_repository__validate_ownership = false"))))))))))
@@ -46,4 +46,4 @@
(inherit guix:guile-git)
(inputs
(modify-inputs (package-inputs guix:guile-git)
- (replace "libgit2" libgit2-1.3)))))
+ (replace "libgit2" libgit2-1.9)))))
diff --git a/guix/forge/gunicorn.scm b/guix/forge/gunicorn.scm
index a86dd7a..6fcbd72 100644
--- a/guix/forge/gunicorn.scm
+++ b/guix/forge/gunicorn.scm
@@ -1,5 +1,5 @@
;;; guix-forge --- Guix software forge meta-service
-;;; Copyright © 2023–2024 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2023–2025 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2024 Frederick M. Muriithi <fredmanglis@protonmail.com>
;;;
;;; This file is part of guix-forge.
@@ -111,7 +111,8 @@
(define (gunicorn-activation config)
(with-imported-modules '((guix build utils))
#~(begin
- (use-modules (guix build utils))
+ (use-modules (guix build utils)
+ (ice-9 match))
;; Create socket directories and set ownership.
(for-each (match-lambda