;;; guix.scm -- Guix package definition (use-modules (guix packages) ((guix git-download) #:select (git-version)) ((guix build utils) #:select (find-files)) ((guix gexp) #:select (local-file)) ((gnu packages) #:select (specification->package)) ((ice-9 popen) #:select (open-pipe)) ((ice-9 rdelim) #:select (read-string)) ((srfi srfi-1) #:select (any))) (define %source-dir (dirname (dirname (current-filename)))) (define %git-commit (read-string (open-pipe "git show HEAD | head -1 | cut -d ' ' -f 2" OPEN_READ))) (define (keep-file? file stat) (not (any (lambda (my-string) (string-contains file my-string)) (list ".git" ".dir-locals.el" "build-aux")))) (define (build-from-git base) (package (inherit base) (version (git-version (package-version base) "HEAD" %git-commit)) (source (local-file %source-dir #:recursive? #t #:select? keep-file?)) (native-inputs `(("autoconf" ,(specification->package "autoconf")) ("automake" ,(specification->package "automake")) ("gettext" ,(specification->package "gettext")) ("help2man" ,(specification->package "help2man")) ("texinfo" ,(specification->package "texinfo")) ,@(package-native-inputs base))) (arguments `(#:configure-flags '("--localstatedir=/var") #:make-flags (list "GUILE_AUTO_COMPILE=0") #:phases (modify-phases %standard-phases (add-after 'unpack 'make-po-directory-writable (lambda _ (for-each make-file-writable (find-files "po" ".")) #t))))))) (list (build-from-git (specification->package "shepherd")) (build-from-git (specification->package "guile2.2-shepherd")) ;; This version FTBFS due to an import of '(ice-9 threads)' in modules/shepherd.scm ;(build-from-git (specification->package "guile2.0-shepherd")) )