;;; genenetwork-machines --- Guix configuration for genenetwork machines ;;; Copyright © 2022, 2023 Arun Isaac ;;; Copyright © 2022 Frederick Muriuki Muriithi ;;; ;;; 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 ;;; . (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)))))