summaryrefslogtreecommitdiff
path: root/guix/build/ruby-build-system.scm
diff options
context:
space:
mode:
authorDavid Thompson <dthompson2@worcester.edu>2015-02-23 18:18:59 -0500
committerDavid Thompson <dthompson2@worcester.edu>2015-03-02 17:33:53 -0500
commit7e7c6a1ac06a8e04acbdc9bbfe9ccc039d188977 (patch)
treeb5e7a942da6f360713288d5866113bb05095a607 /guix/build/ruby-build-system.scm
parent927ff2c379bbab184a7b783d5cec91e53ceaa7e2 (diff)
downloadgnu-guix-7e7c6a1ac06a8e04acbdc9bbfe9ccc039d188977.tar
gnu-guix-7e7c6a1ac06a8e04acbdc9bbfe9ccc039d188977.tar.gz
build: ruby: Add gitify phase.
* guix/build-system/ruby.scm (lower): Add git as implicit input. * guix/build/ruby-build-system.scm (gitify): New procedure. (%standard-phases): Add gitify phase.
Diffstat (limited to 'guix/build/ruby-build-system.scm')
-rw-r--r--guix/build/ruby-build-system.scm21
1 files changed, 16 insertions, 5 deletions
diff --git a/guix/build/ruby-build-system.scm b/guix/build/ruby-build-system.scm
index 2b3ba7c8cd..933788cf90 100644
--- a/guix/build/ruby-build-system.scm
+++ b/guix/build/ruby-build-system.scm
@@ -39,6 +39,14 @@ directory."
((file-name . _) file-name)
(() (error "No files matching pattern: " pattern))))
+;; Most gemspecs assume that builds are taking place within a git repository
+;; by include calls to 'git ls-files'. In order for these gemspecs to work
+;; as-is, every file in the source tree is added to the staging area.
+(define gitify
+ (lambda _
+ (and (zero? (system* "git" "init"))
+ (zero? (system* "git" "add" ".")))))
+
(define build
(lambda _
(zero? (system* "gem" "build" (first-matching-file "\\.gemspec$")))))
@@ -62,13 +70,16 @@ directory."
(first-matching-file "\\.gem$")))))
(define %standard-phases
- (alist-replace
- 'build build
+ (alist-cons-after
+ 'unpack 'gitify gitify
(alist-replace
- 'install install
+ 'build build
(alist-replace
- 'check check
- (alist-delete 'configure gnu:%standard-phases)))))
+ 'install install
+ (alist-replace
+ 'check check
+ (alist-delete
+ 'configure gnu:%standard-phases))))))
(define* (ruby-build #:key inputs (phases %standard-phases)
#:allow-other-keys #:rest args)