blob: 20edfbfac552846eda437372f9b6de1b78affa29 (
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
|
;;; genenetwork-machines --- Guix configuration for genenetwork machines
;;; Copyright © 2022, 2023 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2022 Frederick Muriuki Muriithi <fredmanglis@gmail.com>
;;;
;;; This file is part of genenetwork-machines.
;;;
;;; genenetwork-machines 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.
;;;
;;; genenetwork-machines 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 genenetwork-machines. If not, see
;;; <https://www.gnu.org/licenses/>.
(define-module (genenetwork development-helper)
#:use-module (ice-9 match)
#:use-module (guix gexp)
#:use-module (guix profiles)
#:use-module (guix search-paths)
#:use-module (forge build utils))
(define (command-in-source-gexp source profile command)
"Return a G-expression that runs COMMAND in PROFILE and with SOURCE
as the current directory. SOURCE and PROFILE are store items. COMMAND
is a list of strings specifying the command to be executed."
(with-imported-modules '((guix build utils))
(with-profile profile
#~(begin
(use-modules (rnrs exceptions)
(guix build utils))
(chdir #$source)
(guard (condition ((invoke-error? condition)
(format (current-error-port)
"`~a~{ ~a~}' failed with exit status ~a~%"
(invoke-error-program condition)
(invoke-error-arguments condition)
(invoke-error-exit-status condition))
(exit #f)))
(apply invoke '#$command))
(mkdir-p #$output)))))
|