[Pkg-gnupg-commit] [gnupg2] 118/132: tests: Move the makefile parser.

Daniel Kahn Gillmor dkg at fifthhorseman.net
Wed May 17 03:07:48 UTC 2017


This is an automated email from the git hooks/post-receive script.

dkg pushed a commit to branch experimental
in repository gnupg2.

commit 78d6a25a2db22ad2ae30d57ca980c0400cfef726
Author: Justus Winter <justus at g10code.com>
Date:   Mon Mar 20 10:21:06 2017 +0100

    tests: Move the makefile parser.
    
    * tests/gpgme/gpgme-defs.scm (parse-makefile, parse-makefile-expand):
    Move...
    * tests/gpgscm/makefile.scm: ... here.
    * tests/gpgscm/Makefile.am (EXTRA_DIST): Add new file.
    
    Signed-off-by: Justus Winter <justus at g10code.com>
---
 tests/gpgme/gpgme-defs.scm | 58 -----------------------------------
 tests/gpgscm/Makefile.am   |  1 +
 tests/gpgscm/makefile.scm  | 76 ++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 77 insertions(+), 58 deletions(-)

diff --git a/tests/gpgme/gpgme-defs.scm b/tests/gpgme/gpgme-defs.scm
index a74a174..be6b0f1 100644
--- a/tests/gpgme/gpgme-defs.scm
+++ b/tests/gpgme/gpgme-defs.scm
@@ -109,64 +109,6 @@
 	(start-agent))
       (apply create-gpgme-gpghome path)))
 
-(define (parse-makefile port key)
-  (define (is-continuation? tokens)
-    (string=? (last tokens) "\\"))
-  (define (valid-token? s)
-    (< 0 (string-length s)))
-  (define (drop-continuations tokens)
-    (let loop ((acc '()) (tks tokens))
-      (if (null? tks)
-	  (reverse acc)
-	  (loop (if (string=? "\\" (car tks))
-		    acc
-		    (cons (car tks) acc)) (cdr tks)))))
-  (let next ((acc '()) (found #f))
-    (let ((line (read-line port)))
-      (if (eof-object? line)
-	  acc
-	  (let ((tokens (filter valid-token?
-				(string-splitp (string-trim char-whitespace?
-							    line)
-					       char-whitespace? -1))))
-	    (cond
-	     ((or (null? tokens)
-		  (string-prefix? (car tokens) "#")
-		  (and (not found) (not (and (string=? key (car tokens))
-					     (string=? "=" (cadr tokens))))))
-	      (next acc found))
-	     ((not found)
-	      (assert (and (string=? key (car tokens))
-			   (string=? "=" (cadr tokens))))
-	      (if (is-continuation? tokens)
-		  (next (drop-continuations (cddr tokens)) #t)
-		  (drop-continuations (cddr tokens))))
-	     (else
-	      (assert found)
-	      (if (is-continuation? tokens)
-		  (next (append acc (drop-continuations tokens)) found)
-		  (append acc (drop-continuations tokens))))))))))
-
-(define (parse-makefile-expand filename expand key)
-  (define (variable? v)
-    (and (string-prefix? v "$(") (string-suffix? v ")")))
-
-  (let expand-all ((values (parse-makefile (open-input-file filename) key)))
-    (if (any variable? values)
-	(expand-all
-	 (let expand-one ((acc '()) (v values))
-	   (cond
-	    ((null? v)
-	     acc)
-	    ((variable? (car v))
-	     (let ((makefile (open-input-file filename))
-		   (key (substring (car v) 2 (- (string-length (car v)) 1))))
-	       (expand-one (append acc (expand filename makefile key))
-			   (cdr v))))
-	    (else
-	     (expand-one (append acc (list (car v))) (cdr v))))))
-	values)))
-
 (define python
   (let loop ((pythons (list "python" "python2" "python3")))
     (if (null? pythons)
diff --git a/tests/gpgscm/Makefile.am b/tests/gpgscm/Makefile.am
index 1bdd373..44d7b3f 100644
--- a/tests/gpgscm/Makefile.am
+++ b/tests/gpgscm/Makefile.am
@@ -23,6 +23,7 @@ EXTRA_DIST = \
 	ffi.scm \
 	init.scm \
 	lib.scm \
+	makefile.scm \
 	repl.scm \
 	t-child.scm \
 	xml.scm \
diff --git a/tests/gpgscm/makefile.scm b/tests/gpgscm/makefile.scm
new file mode 100644
index 0000000..32fae3a
--- /dev/null
+++ b/tests/gpgscm/makefile.scm
@@ -0,0 +1,76 @@
+;; Support for parsing Makefiles
+;;
+;; Copyright (C) 2016 g10 Code GmbH
+;;
+;; This file is part of GnuPG.
+;;
+;; GnuPG is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3 of the License, or
+;; (at your option) any later version.
+;;
+;; GnuPG is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with this program; if not, see <http://www.gnu.org/licenses/>.
+
+(define (parse-makefile port key)
+  (define (is-continuation? tokens)
+    (string=? (last tokens) "\\"))
+  (define (valid-token? s)
+    (< 0 (string-length s)))
+  (define (drop-continuations tokens)
+    (let loop ((acc '()) (tks tokens))
+      (if (null? tks)
+	  (reverse acc)
+	  (loop (if (string=? "\\" (car tks))
+		    acc
+		    (cons (car tks) acc)) (cdr tks)))))
+  (let next ((acc '()) (found #f))
+    (let ((line (read-line port)))
+      (if (eof-object? line)
+	  acc
+	  (let ((tokens (filter valid-token?
+				(string-splitp (string-trim char-whitespace?
+							    line)
+					       char-whitespace? -1))))
+	    (cond
+	     ((or (null? tokens)
+		  (string-prefix? (car tokens) "#")
+		  (and (not found) (not (and (string=? key (car tokens))
+					     (string=? "=" (cadr tokens))))))
+	      (next acc found))
+	     ((not found)
+	      (assert (and (string=? key (car tokens))
+			   (string=? "=" (cadr tokens))))
+	      (if (is-continuation? tokens)
+		  (next (drop-continuations (cddr tokens)) #t)
+		  (drop-continuations (cddr tokens))))
+	     (else
+	      (assert found)
+	      (if (is-continuation? tokens)
+		  (next (append acc (drop-continuations tokens)) found)
+		  (append acc (drop-continuations tokens))))))))))
+
+(define (parse-makefile-expand filename expand key)
+  (define (variable? v)
+    (and (string-prefix? v "$(") (string-suffix? v ")")))
+
+  (let expand-all ((values (parse-makefile (open-input-file filename) key)))
+    (if (any variable? values)
+	(expand-all
+	 (let expand-one ((acc '()) (v values))
+	   (cond
+	    ((null? v)
+	     acc)
+	    ((variable? (car v))
+	     (let ((makefile (open-input-file filename))
+		   (key (substring (car v) 2 (- (string-length (car v)) 1))))
+	       (expand-one (append acc (expand filename makefile key))
+			   (cdr v))))
+	    (else
+	     (expand-one (append acc (list (car v))) (cdr v))))))
+	values)))

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-gnupg/gnupg2.git



More information about the Pkg-gnupg-commit mailing list