aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2022-08-02 02:23:43 +0200
committerHugo Hörnquist <hugo@lysator.liu.se>2022-09-18 22:53:57 +0200
commitab141007921d64e728086732ab702fda0eb70108 (patch)
tree05234e4df3f950d69e984bb38fdae2b682e8c65e
parentAdd library for staticly figuring out module deps. (diff)
downloadcalp-ab141007921d64e728086732ab702fda0eb70108.tar.gz
calp-ab141007921d64e728086732ab702fda0eb70108.tar.xz
Extend module-imports to work on non-module scheme files.
-rwxr-xr-xscripts/module-imports.scm41
1 files changed, 25 insertions, 16 deletions
diff --git a/scripts/module-imports.scm b/scripts/module-imports.scm
index 7e9769d1..b7589950 100755
--- a/scripts/module-imports.scm
+++ b/scripts/module-imports.scm
@@ -14,21 +14,23 @@
(add-to-load-path (string-append (dirname (dirname (current-filename))) "/module"))
(add-to-load-path (dirname (current-filename)))
-(use-modules (hnh util)
- ((srfi srfi-1) :select (lset-difference))
- (rnrs lists)
- (module-introspection)
- ((static-util) :select (get-forms)))
+(use-modules ((srfi srfi-1) :select (lset-difference))
+ ((rnrs lists) :select (remp filter partition))
+ ((module-introspection) :select (module-declaration? unique-symbols))
+ ((static-util) :select (get-forms))
+ ((module-uses) :select (module-uses*))
+ )
;;; Module use high scores
-;;; $ grop -Ho '#\?:use-module' -R module | uniq -c | sort -n
+;;; $ grep -Ho '#\?:use-module' -R module | uniq -c | sort -n
(define (main args)
(define filename (cadr args))
- (define-values (module-declaration-lst forms)
+ (define-values (module-declaration-list forms)
(partition module-declaration?
(reverse (call-with-input-file filename get-forms))))
+
;; All symbols in source file, which are not in module declaration.
;; Otherwise all explicitly imported symbols would be marked as
;; used.
@@ -36,6 +38,21 @@
;; (format #t "~y" (find-module-declaration forms))
;; (format #t "~a~%" symbs)
+ (define skip-list '((guile)
+ (guile-user)
+ (srfi srfi-1)
+ ))
+
+
+ (define modules
+ (if (null? module-declaration-list)
+ (map resolve-interface
+ (remp (lambda (mod) (member mod skip-list))
+ (module-uses* forms)))
+ (remp (lambda (mod) (member (module-name mod) skip-list))
+ (module-uses (resolve-module
+ (cadr (car module-declaration-list)))))))
+
(format #t "=== ~a ===~%" filename)
(for-each (lambda (mod)
@@ -54,13 +71,5 @@
used-count total-count (module-name mod)
used-symbols
(lset-difference eq? all-symbols used-symbols)))
-
- (remp (lambda (mod)
- (member (module-name mod)
- '((guile)
- (guile-user)
- (srfi srfi-1)
- )))
- (module-uses (resolve-module
- (cadr (car module-declaration-lst))))))
+ modules)
(newline))