Index: Makefile ================================================================== --- Makefile +++ Makefile @@ -28,14 +28,14 @@ PREFIX=$(PWD) CSCOPTS= INSTALL=install SRCFILES = runconfig.scm \ server.scm keys.scm \ - ezsteps.scm api.scm \ + ezsteps.scm \ archive.scm env.scm -# cgisetup/models/pgdb.scm +pgdb.scm : cgisetup/models/pgdb.scm # module source files MSRCFILES = dbfile.scm debugprint.scm mtargs.scm commonmod.scm dbmod.scm \ tcp-transportmod.scm rmtmod.scm portlogger.scm apimod.scm \ configfmod.scm processmod.scm servermod.scm megatestmod.scm \ @@ -49,51 +49,93 @@ cp transport-mode.scm.template transport-mode.scm dashboard-transport-mode.scm : dashboard-transport-mode.scm.template cp dashboard-transport-mode.scm.template dashboard-transport-mode.scm -mtest : transport-mode.scm +mtest : transport-mode.scm unitdeps.pdf dboard : dashboard-transport-mode.scm +# include the generated dependencies +include make.inc + +make.inc : megatest-fossil-hash.scm +mofiles/mtargs.o mofiles/cookie.o : make.inc +megatest.o : megatest-fossil-hash.scm megatest-version.scm $(MOFILES) $(MOIMPFILES) + +# special cases due to source files not in current directory +mofiles/pgdb.o : mofiles/configfmod.o mofiles/mtargs.o mofiles/debugprint.o + # dbmod.import.o is just a hack here -mofiles/mtbody.o : mofiles/launchmod.o readline-fix.scm mofiles/envmod.o mofiles/genexample.o mofiles/mutils.o mofiles/diff-report.o mofiles/tdb.o -mofiles/dcommon.o : mofiles/vgmod.o -process.o : mofiles/processmod.o -mofiles/configfmod.o : mofiles/processmod.o -mofiles/processmod.o : mofiles/commonmod.o -mofiles/servermod.o : mofiles/commonmod.o -mofiles/rmtmod.o : mofiles/mtmod.o mofiles/apimod.o -mofiles/dbmod.o : mofiles/mtmod.o -# mofiles/mtmod.o : mofiles/tcp-transportmod.o -mofiles/megatestmod.o : mofiles/pkts.o mofiles/servermod.o mofiles/fsmod.o -# mofiles/mtmod.o : mofiles/testsmod.o -mofiles/subrunmod.o : mofiles/tasksmod.o -mofiles/dcommon.o : mofiles/tasksmod.o -mofiles/launchmod.o : mofiles/subrunmod.o mofiles/runsmod.o -mofiles/launchmod.o : mofiles/ezstepsmod.o -mofiles/runsmod.o : mofiles/archivemod.o -mofiles/testsmod.o : mofiles/dbmod.o - -mofiles/dbfile.o : \ - mofiles/debugprint.o mofiles/commonmod.o mofiles/configfmod.o -mofiles/apimod.o : mofiles/commonmod.o mofiles/tcp-transportmod.o mofiles/configfmod.o mofiles/megatestmod.o -mofiles/dbmod.o : mofiles/dbfile.o -mofiles/api.o : mofiles/apimod.o -mofiles/commonmod.o : mofiles/debugprint.o mofiles/stml2.o -mofiles/dbfile.o : mofiles/debugprint.o -mofiles/rmtmod.o mofiles/dbmod.o : mofiles/dbfile.o mofiles/commonmod.o mofiles/debugprint.o -db.o : mofiles/dbmod.o mofiles/dbfile.o -mofiles/debugprint.o : mofiles/mtargs.o -mofiles/tcp-transportmod.o : mofiles/portlogger.o -mofiles/tasksmod.o : mofiles/rmtmod.o mofiles/pgdb.o -mofiles/fsmod.o : mofiles/debugprint.o - -# ftail.scm rmtmod.scm commonmod.scm removed -# MSRCFILES = ducttape-lib.scm pkts.scm stml2.scm cookie.scm mutils.scm \ -# mtargs.scm commonmod.scm dbmod.scm adjutant.scm ulex.scm \ -# rmtmod.scm apimod.scm +# mofiles/mtbody.o : mofiles/launchmod.o readline-fix.scm mofiles/envmod.o mofiles/genexample.o mofiles/mutils.o mofiles/diff-report.o mofiles/tdb.o +# mofiles/dcommon.o : mofiles/vgmod.o +# process.o : mofiles/processmod.o +# mofiles/configfmod.o : mofiles/processmod.o +# mofiles/processmod.o : mofiles/commonmod.o +# mofiles/servermod.o : mofiles/commonmod.o +# mofiles/rmtmod.o : mofiles/mtmod.o mofiles/apimod.o +# mofiles/dbmod.o : mofiles/mtmod.o +# mofiles/megatestmod.o : mofiles/pkts.o mofiles/servermod.o mofiles/fsmod.o +# mofiles/subrunmod.o : mofiles/tasksmod.o +# mofiles/dcommon.o : mofiles/tasksmod.o +# mofiles/launchmod.o : mofiles/subrunmod.o mofiles/runsmod.o +# mofiles/launchmod.o : mofiles/ezstepsmod.o +# mofiles/runsmod.o : mofiles/archivemod.o +# mofiles/testsmod.o : mofiles/dbmod.o +# mofiles/dbfile.o : \ +# mofiles/debugprint.o mofiles/commonmod.o mofiles/configfmod.o +# mofiles/apimod.o : mofiles/commonmod.o mofiles/tcp-transportmod.o mofiles/configfmod.o mofiles/megatestmod.o +# mofiles/dbmod.o : mofiles/dbfile.o +# mofiles/api.o : mofiles/apimod.o +# mofiles/commonmod.o : mofiles/debugprint.o mofiles/stml2.o +# mofiles/dbfile.o : mofiles/debugprint.o +# mofiles/rmtmod.o mofiles/dbmod.o : mofiles/dbfile.o mofiles/commonmod.o mofiles/debugprint.o +# db.o : mofiles/dbmod.o mofiles/dbfile.o +# mofiles/debugprint.o : mofiles/mtargs.o +# mofiles/tcp-transportmod.o : mofiles/portlogger.o +# mofiles/tasksmod.o : mofiles/rmtmod.o mofiles/pgdb.o +# mofiles/fsmod.o : mofiles/debugprint.o +# mofiles/commonmod.o : mofiles/debugprint.o megatest-fossil-hash.scm +# common.o : mofiles/commonmod.o +# mofiles/configfmod.o : mofiles/commonmod.o configf-guts.scm +# +# tests.o db.o launch.o \ +# dashboard-guimonitor.o dashboard-main.o \ +# monitor.o dashboard.o archive.o megatest.o : db_records.scm megatest-fossil-hash.scm +# +# tests.o dashboard.o dashboard-main.o : run_records.scm +# +# db.o ezsteps.o keys.o launch.o megatest.o monitor.o tests.o : key_records.scm +# db.o api.o : mofiles/dbmod.o mofiles/dbfile.o mofiles/debugprint.o mofiles/commonmod.o dbmod.import.o +# common.scm configf.scm dashboard-guimonitor.scm dashboard.scm dcommon.scm ezsteps.scm index-tree.scm keys.scm launch.scm megatest.scm monitor.scm mt.scm newdashboard.scm runconfig.scm server.scm tdb.scm : common_records.scm megatest-version.scm +# +# common_records.scm : altdb.scm +# +# mofiles/dbfile.o : mofiles/commonmod.o +# +# # mofiles/stml2.o : mofiles/cookie.o +# # configf.o : mofiles/commonmod.o +# +# dashboard.o : megatest-version.scm +# +# dcommon.o : run_records.scm +# +# mofiles/stml2.o : mofiles/cookie.o +# +# # # special include based modules +# # mofiles/pkts.o : pkts/pkts.scm +# # mofiles/stml2.o : cookie.o +# # # mofiles/mtargs.o : mtargs/mtargs.scm +# # # mofiles/mtconfigf.o : mtconfigf/mtconfigf.scm +# # mofiles/ulex.o : ulex/ulex.scm +# # mofiles/mutils.o : mutils/mutils.scm +# # mofiles/cookie.o : stml2/cookie.scm +# # mofiles/stml2.o : stml2/stml2.scm +# +# # for the modularized stuff +# mofiles/rmtmod.o : mofiles/commonmod.o +# GUISRCF = dashboard-guimonitor.scm OFILES = $(SRCFILES:%.scm=%.o) GOFILES = $(GUISRCF:%.scm=%.o) @@ -103,17 +145,10 @@ MOIMPFILES = $(MSRCFILES:%.scm=%.import.o) %.import.o : %.import.scm csc $(CSCOPTS) -unit $*.import -c $*.import.scm -o $*.import.o -# I'm not sure the cp is a good idea, changed a lot of things and it may not have been necessary... -# mofiles/%.o %.import.scm : %.scm megatest-fossil-hash.scm -# @[ -e mofiles ] || mkdir -p mofiles -# csc $(CSCOPTS) -I mofiles -I $* -J -c $< -o $*.o -# cp $*.o mofiles/$*.o -# @touch $*.import.scm # ensure it is touched after the .o is made - %.import.scm mofiles/%.o : %.scm @mkdir -p mofiles csc $(CSCOPTS) -J -c $< -o mofiles/$*.o @if [[ -e $*.import.scm ]];then touch $*.import.scm;fi # ensure it is touched after the .o is made @@ -124,17 +159,11 @@ ifeq ($(MTESTHASH),) $(error MTESTHASH is broken!) endif -# CSIPATH=$(shell which csi) -# CKPATH=$(shell dirname $(shell dirname $(CSIPATH))) -# ARCHSTR=$(shell uname -m)_$(shell uname -r) -# BASH_MACHTYPE=$(shell bash -c "echo \$$MACHTYPE") -# ARCHSTR=$(BASH_MACHTYPE)_$(shell lsb_release -sr) ARCHSTR=$(shell if [[ -e /usr/bin/sw_vers ]]; then /usr/bin/sw_vers -productVersion; else lsb_release -sr; fi) -# ARCHSTR=$(shell bash -c "echo \$$MACHTYPE") PNGFILES = $(shell cd docs/manual;ls *png) mtest: $(OFILES) readline-fix.scm $(MOFILES) $(MOIMPFILES) megatest.o megatest-version.scm @@ -147,40 +176,10 @@ csc $(CSCOPTS) $(OFILES) dashboard.scm $(GOFILES) $(MOFILES) $(MOIMPFILES) -o dboard mtut: $(OFILES) $(MOFILES) $(MOIMPFILES) megatest-fossil-hash.scm mtut.scm megatest-version.scm csc $(CSCOPTS) $(OFILES) $(MOFILES) $(MOIMPFILES) mtut.scm -o mtut -# include makefile.inc - -# TCMTOBJS = \ -# api.o \ -# archive.o \ -# cgisetup/models/pgdb.o \ -# common.o \ -# configf.o \ -# db.o \ -# env.o \ -# keys.o \ -# launch.o \ -# margs.o \ -# mt.o \ -# process.o \ -# rmt.o \ -# runconfig.o \ -# runs.o \ -# server.o \ -# tasks.o \ -# tdb.o \ -# tests.o \ -# ezsteps.o -# -# # mofiles/rmtmod.o \ -# # mofiles/commonmod.o \ -# -# tcmt : $(TCMTOBJS) tcmt.scm megatest-version.scm $(MOFILES) $(MOIMPFILES) -# csc $(CSCOPTS) $(TCMTOBJS) $(MOFILES) $(MOIMPFILES) tcmt.scm -o tcmt - # install documentation to $(PREFIX)/docs # DOES NOT REBUILD DOCS # $(PREFIX)/share/docs/megatest_manual.html : docs/manual/megatest_manual.html mkdir -p $(PREFIX)/share/docs @@ -197,63 +196,10 @@ $(INSTALL) mt-pg.sql $(PREFIX)/share/db/mt-pg.sql # Special dependencies for the includes $(MOFILE) $(MOIMPFILES) : megatest-fossil-hash.scm -mofiles/commonmod.o : mofiles/debugprint.o megatest-fossil-hash.scm -common.o : mofiles/commonmod.o -mofiles/configfmod.o : mofiles/commonmod.o configf-guts.scm - -# mofiles/dbmod.o : mofiles/configfmod.o - -# commonmod.o dashboard.o megatest.o tcmt.o apimod.o : megatest-fossil-hash.scm - -tests.o db.o launch.o \ -dashboard-guimonitor.o dashboard-main.o \ -monitor.o dashboard.o archive.o megatest.o : db_records.scm megatest-fossil-hash.scm - -tests.o dashboard.o dashboard-main.o : run_records.scm - -db.o ezsteps.o keys.o launch.o megatest.o monitor.o tests.o : key_records.scm -db.o api.o : mofiles/dbmod.o mofiles/dbfile.o mofiles/debugprint.o mofiles/commonmod.o dbmod.import.o - -tests.o tasks.o dashboard-tasks.o : task_records.scm - -# mofiles-made : $(MOFILES) -# make $(MOIMPFILES) -# touch mofiles-made - -megatest.o : megatest-fossil-hash.scm megatest-version.scm $(MOFILES) $(MOIMPFILES) - -common.scm configf.scm dashboard-guimonitor.scm dashboard.scm dcommon.scm ezsteps.scm index-tree.scm keys.scm launch.scm megatest.scm monitor.scm mt.scm newdashboard.scm runconfig.scm server.scm tdb.scm : common_records.scm megatest-version.scm - -common_records.scm : altdb.scm - -mofiles/dbfile.o : mofiles/commonmod.o - -# mofiles/stml2.o : mofiles/cookie.o -# configf.o : mofiles/commonmod.o - -dashboard.o : megatest-version.scm - -dcommon.o : run_records.scm - -mofiles/stml2.o : mofiles/cookie.o - -# # special include based modules -# mofiles/pkts.o : pkts/pkts.scm -# mofiles/stml2.o : cookie.o -# # mofiles/mtargs.o : mtargs/mtargs.scm -# # mofiles/mtconfigf.o : mtconfigf/mtconfigf.scm -# mofiles/ulex.o : ulex/ulex.scm -# mofiles/mutils.o : mutils/mutils.scm -# mofiles/cookie.o : stml2/cookie.scm -# mofiles/stml2.o : stml2/stml2.scm - -# for the modularized stuff -mofiles/rmtmod.o : mofiles/commonmod.o - megatest-fossil-hash.scm : $(SRCFILES) megatest.scm *_records.scm echo "(define megatest-fossil-hash \"$(MTESTHASH)\")" > megatest-fossil-hash.new if ! diff -q megatest-fossil-hash.new megatest-fossil-hash.scm ; then echo copying .new to .scm;cp -f megatest-fossil-hash.new megatest-fossil-hash.scm;fi $(OFILES) $(GOFILES) : common_records.scm @@ -464,13 +410,13 @@ fi if csi -ne '(import postgresql)'&> /dev/null;then \ echo "(import postgresql)(hash-table-set! *available-db* 'postgresql #t)" >> altdb.scm;\ fi - -unitdeps.dot : *mod.scm ./utils/plot-uses Makefile - ./utils/plot-uses todot processmod.import,dbfile.import,dbmod.import,configfmod.import,mtmod.import,procesmod.import,commonmod.import,mtargs.import,mtargs,debugprint $$(ls *.scm|grep -v import) > unitdeps.dot +DOTIGNORES= processmod.import,dbfile.import,dbmod.import,configfmod.import,mtmod.import,processmod.import,commonmod.import,mtargs.import +unitdeps.dot make.inc : *mod.scm ./utils/plot-uses Makefile + ./utils/plot-uses todot $(DOTIGNORES) $$(ls *.scm|grep -v import) > unitdeps.dot # ./utils/plot-uses todot commonmod,portlogger,stml2,debugprint,mtargs apimod.scm commonmod.scm configfmod.scm dbmod.scm megatestmod.scm mtmod.scm processmod.scm rmtmod.scm servermod.scm tcp-transportmod.scm > uses.dot ; dot uses.dot -Tpdf -o uses.pdf # apimod.scm commonmod.scm configfmod.scm dbmod.scm megatestmod.scm mtmod.scm processmod.scm rmtmod.scm servermod.scm tcp-transportmod.scm testsmod.scm DELETED api.scm Index: api.scm ================================================================== --- api.scm +++ /dev/null @@ -1,44 +0,0 @@ -;;====================================================================== -;; Copyright 2006-2013, Matthew Welland. -;; -;; This file is part of Megatest. -;; -;; Megatest 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. -;; -;; Megatest 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 Megatest. If not, see . -;; -;;====================================================================== - -(declare (unit api)) -(declare (uses apimod)) - -(declare (uses debugprint)) -(declare (uses commonmod)) -(declare (uses dbmod)) -(declare (uses dbfile)) -(declare (uses tcp-transportmod)) - -(import commonmod) -(import apimod) -(import dbmod) -(import dbfile) -(import debugprint) -(import tcp-transportmod) - -(use srfi-69 - srfi-18 - posix - matchable - s11n - typed-records) - - Index: archivemod.scm ================================================================== --- archivemod.scm +++ archivemod.scm @@ -33,10 +33,11 @@ (declare (uses fsmod)) (declare (uses processmod)) (declare (uses mtmod)) (declare (uses dbmod)) (declare (uses dbfile)) +(declare (uses rmtmod)) (use srfi-69) (module archivemod ( Index: dashboard-guimonitor.scm ================================================================== --- dashboard-guimonitor.scm +++ dashboard-guimonitor.scm @@ -35,14 +35,11 @@ ;; (declare (uses common)) (declare (uses keys)) (declare (uses commonmod)) (import commonmod) -;; (include "common_records.scm") -;; (include "db_records.scm") (include "run_records.scm") -(include "task_records.scm") (define (control-panel db tdb keys) (let* ((var-params (make-hash-table)) ;; register all the widgets here for querying on run, rollup, remove? (key-params (make-hash-table)) (monitordat '()) ;; list of monitor records Index: dashboard.scm ================================================================== --- dashboard.scm +++ dashboard.scm @@ -100,14 +100,11 @@ vgmod dcommon ) (include "common_records.scm") -;; (include "db_records.scm") (include "run_records.scm") -(include "task_records.scm") -;; (include "megatest-version.scm") (include "megatest-fossil-hash.scm") ;; set some parameters here - these need to be put in something that can be loaded from other ;; executables such as dashboard and mtutil ;; Index: dcommon.scm ================================================================== --- dcommon.scm +++ dcommon.scm @@ -88,12 +88,10 @@ servermod ) (include "megatest-version.scm") (include "common_records.scm") -;; (include "db_records.scm") -;; (include "key_records.scm") (include "run_records.scm") ;; yes, this is non-ideal (define dashboard:update-summary-tab #f) (define dashboard:update-servers-table #f) @@ -6288,11 +6286,12 @@ (let* ((mtdb-path (conc *toppath* "/.mtdb/main.db")) (target (args:get-arg "-target")) (commondat (dboard:commondat-make))) (if target (begin - (args:remove-arg-from-ht "-target") + ;; (args:remove-arg-from-ht "-target") ;; we have old versions of mtargs installed as eggs - uncomment this when going to chicken 5 BUG + (hash-table-delete! args:arg-hash "-target") (dboard:commondat-target-set! commondat target) ) ) (if (not (launch:setup)) Index: megatest.scm ================================================================== --- megatest.scm +++ megatest.scm @@ -73,11 +73,10 @@ (declare (uses runsmod)) (declare (uses ezstepsmod)) (declare (uses launchmod)) (declare (uses tdb)) -(declare (uses api)) (declare (uses env)) (declare (uses diff-report)) (declare (uses server)) (declare (uses genexample)) (declare (uses mtbody)) Index: mtbody.scm ================================================================== --- mtbody.scm +++ mtbody.scm @@ -21,26 +21,38 @@ ;;====================================================================== ;; All the crud that was in megatest.scm ;;====================================================================== (declare (unit mtbody)) -(declare (uses debugprint)) -(declare (uses mtargs)) + +(declare (uses apimod)) +(declare (uses archivemod)) (declare (uses commonmod)) (declare (uses configfmod)) -(declare (uses dbmod)) (declare (uses dbfile)) +(declare (uses dbmod)) +(declare (uses debugprint)) +(declare (uses diff-report)) (declare (uses envmod)) -(declare (uses apimod)) +(declare (uses fsmod)) (declare (uses genexample)) -(declare (uses rmtmod)) -(declare (uses archivemod)) +(declare (uses launchmod)) +(declare (uses megatestmod)) +(declare (uses mtargs)) +(declare (uses mtmod)) (declare (uses mutils)) (declare (uses odsmod)) -(declare (uses testsmod)) -(declare (uses diff-report)) +(declare (uses portlogger)) +(declare (uses processmod)) +(declare (uses rmtmod)) +(declare (uses runsmod)) +(declare (uses servermod)) +(declare (uses stml2)) +(declare (uses tasksmod)) +(declare (uses tcp-transportmod)) (declare (uses tdb)) +(declare (uses testsmod)) (use srfi-69) (import csi) (module mtbody Index: stml2.scm ================================================================== --- stml2.scm +++ stml2.scm @@ -17,7 +17,8 @@ ;; along with Megatest. If not, see . ;;====================================================================== (declare (unit stml2)) +(declare (uses cookie)) (include "stml2/stml2.scm") DELETED task_records.scm Index: task_records.scm ================================================================== --- task_records.scm +++ /dev/null @@ -1,19 +0,0 @@ -;;====================================================================== -;; Copyright 2006-2012, Matthew Welland. -;; -;; This file is part of Megatest. -;; -;; Megatest 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. -;; -;; Megatest 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 Megatest. If not, see . -;;====================================================================== - Index: tasksmod.scm ================================================================== --- tasksmod.scm +++ tasksmod.scm @@ -132,13 +132,10 @@ pgdb mtmod megatestmod ) -(include "task_records.scm") -;; (include "db_records.scm") - ;;====================================================================== ;; Tasks db ;;====================================================================== (define (tasks:get-task-db-path) Index: utils/plot-uses.scm ================================================================== --- utils/plot-uses.scm +++ utils/plot-uses.scm @@ -38,31 +38,35 @@ (define (print-err . data) (with-output-to-port (current-error-port) (lambda () (apply print data)))) -(define (process-file ignores fname) +(define (process-file ignores fname oup) (with-input-from-file fname (lambda () (let loop ((modname "DUMMYMOD")) (let* ((inl (read-line))) (if (eof-object? inl) #t (match (string-search unituses-rx inl) - ((_ dtype unitname) - (if (equal? dtype "unit") - (loop unitname) - (begin - (if (equal? dtype "uses") - (if (not (or (member modname '("DUMMYMOD")) - (member modname ignores) - (member unitname ignores))) - (print " \""unitname"\" -> \""modname"\";")) - (print-err "ERROR: bad declare line \""inl"\"")) - (loop modname)))) - (else - (loop modname))))))))) + ((_ dtype unitname) + (if (equal? dtype "unit") + (loop unitname) + (begin + (if (equal? dtype "uses") + (if (not (or (member modname '("DUMMYMOD")) + (member modname ignores) + (member unitname ignores))) + (begin + (print " \""unitname"\" -> \""modname"\";") + (with-output-to-port oup + (lambda () + (print "mofiles/"modname".o : mofiles/"unitname".o"))))) + (print-err "ERROR: bad declare line \""inl"\"")) + (loop modname)))) + (else + (loop modname))))))))) ;; ./utils/plot-uses todot portlogger,stml2,debugprint,mtargs ;; apimod.scm commonmod.scm configfmod.scm dbmod.scm megatestmod.scm ;; mtmod.scm processmod.scm rmtmod.scm servermod.scm ;; tcp-transportmod.scm > uses.dot @@ -71,19 +75,21 @@ (define (main) (match (command-line-arguments) (("todot" ignoreunits . files) - (let* ((ignores (string-split ignoreunits ","))) + (let* ((ignores (string-split ignoreunits ",")) + (oup (open-output-file "make.inc"))) (print-err "Making graph for files: " (string-intersperse files ", ")) (print "digraph uses_unit {") (for-each (lambda (fname) (print "// Filename: "fname) - (process-file ignores fname)) + (process-file ignores fname oup)) files) - (print "}"))) + (print "}") + (close-output-port oup))) (else (print-err "Usage: plot-uses todot u1,u2... file1.scm ...") (print-err " where u1,u2... are units to ignore and file1.scm... are the files to process.")))) (main)