[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] build: ruby: Add gitify phase.
From: |
David Thompson |
Subject: |
[PATCH] build: ruby: Add gitify phase. |
Date: |
Tue, 24 Feb 2015 22:20:27 -0500 |
User-agent: |
Notmuch/0.18.2 (http://notmuchmail.org) Emacs/24.4.1 (x86_64-pc-linux-gnu) |
This patch solves a blocking issue for packaging a very large number of
Ruby gems, which is that the build process assumes you are working out
of a git repository.
>From 7828651066c6a6eb338ca5343456228f0edbeafa Mon Sep 17 00:00:00 2001
From: David Thompson <address@hidden>
Date: Mon, 23 Feb 2015 18:18:59 -0500
Subject: [PATCH] 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.
---
guix/build-system/ruby.scm | 32 +++++++++++++++++---------------
guix/build/ruby-build-system.scm | 21 ++++++++++++++++-----
2 files changed, 33 insertions(+), 20 deletions(-)
diff --git a/guix/build-system/ruby.scm b/guix/build-system/ruby.scm
index d2dd6a4..08301ec 100644
--- a/guix/build-system/ruby.scm
+++ b/guix/build-system/ruby.scm
@@ -43,22 +43,24 @@
(define private-keywords
'(#:source #:target #:ruby #:inputs #:native-inputs))
- (and (not target) ;XXX: no cross-compilation
- (bag
- (name name)
- (system system)
- (host-inputs `(,@(if source
- `(("source" ,source))
- '())
- ,@inputs
+ (let ((version-control (resolve-interface '(gnu packages version-control))))
+ (and (not target) ;XXX: no cross-compilation
+ (bag
+ (name name)
+ (system system)
+ (host-inputs `(,@(if source
+ `(("source" ,source))
+ '())
+ ,@inputs
- ;; Keep the standard inputs of 'gnu-build-system'.
- ,@(standard-packages)))
- (build-inputs `(("ruby" ,ruby)
- ,@native-inputs))
- (outputs outputs)
- (build ruby-build)
- (arguments (strip-keyword-arguments private-keywords arguments)))))
+ ;; Keep the standard inputs of 'gnu-build-system'.
+ ,@(standard-packages)))
+ (build-inputs `(("ruby" ,ruby)
+ ("git" ,(module-ref version-control 'git))
+ ,@native-inputs))
+ (outputs outputs)
+ (build ruby-build)
+ (arguments (strip-keyword-arguments private-keywords arguments))))))
(define* (ruby-build store name inputs
#:key
diff --git a/guix/build/ruby-build-system.scm b/guix/build/ruby-build-system.scm
index 2b3ba7c..933788c 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)
--
2.1.4
--
David Thompson
Web Developer - Free Software Foundation - http://fsf.org
GPG Key: 0FF1D807
Support the FSF: https://fsf.org/donate
- [PATCH] build: ruby: Add gitify phase.,
David Thompson <=