summary refs log tree commit diff
diff options
context:
space:
mode:
authorArun Isaac2022-01-05 15:48:54 +0530
committerArun Isaac2022-01-05 16:24:22 +0530
commit898e59dfa3db531542b556648d8ad029535886e3 (patch)
tree724bf13dc262264bdd52aa5158908463b7173970
parent870ab7dba04afe86d8ff4a0b8434add416539ade (diff)
downloadkolam-898e59dfa3db531542b556648d8ad029535886e3.tar.gz
kolam-898e59dfa3db531542b556648d8ad029535886e3.tar.lz
kolam-898e59dfa3db531542b556648d8ad029535886e3.zip
configure: Output version.
* configure.scm: Import (rnrs io ports), (srfi srfi-26) and (ice-9
popen).
(call-with-input-pipe): New function.
(version): New variable.
Output version to Makefile.include.
-rw-r--r--configure.scm31
1 files changed, 29 insertions, 2 deletions
diff --git a/configure.scm b/configure.scm
index 07a822a..9c519fc 100644
--- a/configure.scm
+++ b/configure.scm
@@ -17,9 +17,24 @@
 ;;; License along with kolam.  If not, see
 ;;; <http://www.gnu.org/licenses/>.
 
-(use-modules (srfi srfi-28)
+(use-modules (rnrs io ports)
+             (srfi srfi-26)
+             (srfi srfi-28)
              (srfi srfi-37)
-             (ice-9 match))
+             (ice-9 match)
+             (ice-9 popen))
+
+(define (call-with-input-pipe command proc)
+  "Call PROC with input pipe to COMMAND. COMMAND is a list of program
+arguments."
+  (match command
+    ((prog args ...)
+     (let ((port #f))
+       (dynamic-wind
+         (lambda ()
+           (set! port (apply open-pipe* OPEN_READ prog args)))
+         (cut proc port)
+         (cut close-pipe port))))))
 
 (define (check-for-guile-3.0)
   (display "checking for guile 3.0... ")
@@ -75,6 +90,16 @@
          (libdir . ,libdir)
          (datarootdir . ,datarootdir))))))
 
+(define version
+  (call-with-input-pipe (list "git" "tag" "--sort=-taggerdate"
+                              "--list" "v*")
+    (lambda (port)
+      (let ((line (get-line port)))
+        (if (eof-object? line)
+            ;; If there are no tags, assume first version.
+            "0.1.0"
+            (substring line (string-length "v")))))))
+
 (check-for-guile-3.0)
 (check-for-module '(json))
 
@@ -83,11 +108,13 @@
     (display (format "# This file was automatically generated by configure.
 
 project = ~a
+version = ~a
 libdir = ~a
 datarootdir = ~a
 guile_effective_version = ~a
 "
                      (assq-ref processed-args 'project)
+                     version
                      (assq-ref processed-args 'libdir)
                      (assq-ref processed-args 'datarootdir)
                      (effective-version))