summaryrefslogtreecommitdiff
path: root/gnu/packages/gtk.scm
diff options
context:
space:
mode:
authorRicardo Wurmus <rekado@elephly.net>2021-01-03 21:19:46 +0100
committerRicardo Wurmus <rekado@elephly.net>2021-01-03 22:38:50 +0100
commit8caf7939220c464a8982f9bfa44430860067e8aa (patch)
tree0c7770f9e0453a4972cd3e2652a84aca09f713b8 /gnu/packages/gtk.scm
parentb9a372066669b863a872efd0a48940f16a0a3698 (diff)
gnu: guile-rsvg: Compile Scheme files.
* gnu/packages/gtk.scm (guile-rsvg)[arguments]: Add phase "install-go-files".
Diffstat (limited to 'gnu/packages/gtk.scm')
-rw-r--r--gnu/packages/gtk.scm34
1 files changed, 30 insertions, 4 deletions
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 5e090eb5ed..89efcd61c4 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -1040,10 +1040,36 @@ exceptions, macros, and a dynamic programming environment.")
(file-name (string-append name "-" version ".tar.gz"))))
(build-system gnu-build-system)
(arguments
- `(#:phases (modify-phases %standard-phases
- (replace 'bootstrap
- (lambda _
- (invoke "autoreconf" "-vfi"))))))
+ `(#:modules ((guix build gnu-build-system)
+ (guix build utils)
+ (ice-9 rdelim)
+ (ice-9 popen))
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'bootstrap
+ (lambda _
+ (invoke "autoreconf" "-vfi")))
+ (add-after 'install 'install-go-files
+ (lambda* (#:key outputs inputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (effective (read-line
+ (open-pipe* OPEN_READ
+ "guile" "-c"
+ "(display (effective-version))")))
+ (module-dir (string-append out "/share/guile/site/"
+ effective))
+ (object-dir (string-append out "/lib/guile/" effective
+ "/site-ccache"))
+ (prefix (string-length module-dir)))
+ ;; compile to the destination
+ (for-each (lambda (file)
+ (let* ((base (string-drop (string-drop-right file 4)
+ prefix))
+ (go (string-append object-dir base ".go")))
+ (invoke "guild" "compile" "-L" module-dir
+ file "-o" go)))
+ (find-files module-dir "\\.scm$"))
+ #t))))))
(native-inputs `(("pkg-config" ,pkg-config)
("autoconf" ,autoconf)
("automake" ,automake)