Index: Makefile ================================================================== --- Makefile +++ Makefile @@ -152,27 +152,28 @@ $(PREFIX)/share/db/mt-pg.sql : mt-pg.sql mkdir -p $(PREFIX)/share/db $(INSTALL) mt-pg.sql $(PREFIX)/share/db/mt-pg.sql # Include the generated dependency file -# include build.inc +include build.inc # Special dependencies for the module includes $(MOFILE) $(MOIMPFILES) : megatest-fossil-hash.scm # we are going to generate this by running make without -j # and only adding the needed deps. The full deps have too many # circular deps and can not (yet) be resolved. -mofiles/dcommonmod.o mofiles/configfmod.o mofiles/ods.o \ - mofiles/apimod.o mofiles/rmtmod.o : \ - mofiles/commonmod.o - -mofiles/dbmod.o : mofiles/commonmod.o mofiles/ods.o mofiles/configfmod.o -mofiles/servermod.o mofiles/rmtmod.o : mofiles/dbmod.o - -dcommon.o : mofiles/dcommonmod.o - +## +## mofiles/dcommonmod.o mofiles/configfmod.o mofiles/ods.o mofiles/apimod.o mofiles/rmtmod.o mofiles/dbmod.o : \ +## mofiles/commonmod.o +## +## mofiles/dbmod.o : mofiles/ods.o +## mofiles/dbmod.o : mofiles/configfmod.o +## mofiles/servermod.o mofiles/rmtmod.o : mofiles/dbmod.o +## +## dcommon.o : mofiles/dcommonmod.o +## # megatest.o : $(MOIMPFILES) # mofiles/commonmod.o : megatest-fossil-hash.scm # mofiles/dbmod.o \ # mofiles/servermod.o \ Index: build.inc ================================================================== --- build.inc +++ build.inc @@ -1,288 +1,126 @@ # To regenerate this file do: # (cd utils/;ck52 csc gendeps.scm) && ./utils/gendeps allunits *scm # cp allunits.inc build.inc # -mofiles/apimod.o : mofiles/commonmod.o -api.o : rmt.o -api.o : db.o -api.o : tasks.o -api.o : mofiles/commonmod.o -api.o : mofiles/apimod.o -api.o : mofiles/dbmod.o -archive.o : db.o -archive.o : common.o -archive.o : mofiles/configfmod.o -archive.o : mofiles/commonmod.o -archive.o : mofiles/dbmod.o -client.o : common.o -client.o : db.o -client.o : mofiles/commonmod.o -client.o : mofiles/dbmod.o -client.o : rmt.o -client.o : mofiles/servermod.o -common.o : mofiles/commonmod.o -common.o : mofiles/dbmod.o -common.o : mofiles/configfmod.o -common.o : mofiles/servermod.o -mofiles/configfmod.o : mofiles/commonmod.o -configf.o : process.o -configf.o : env.o -configf.o : mofiles/commonmod.o -configf.o : mofiles/configfmod.o -dashboard-context-menu.o : common.o -dashboard-context-menu.o : db.o -dashboard-context-menu.o : gutils.o -dashboard-context-menu.o : rmt.o -dashboard-context-menu.o : ezsteps.o -dashboard-context-menu.o : subrun.o +tree.o : mofiles/commonmod.o +tests.o : mofiles/commonmod.o +tdb.o : mofiles/commonmod.o +tcmt.o : mofiles/commonmod.o +tasks.o : mofiles/commonmod.o +subrun.o : mofiles/commonmod.o +mofiles/servermod.o : mofiles/commonmod.o +server.o : mofiles/commonmod.o +runs.o : mofiles/commonmod.o +runconfig.o : mofiles/commonmod.o +mofiles/rmtmod.o : mofiles/commonmod.o +rmt.o : mofiles/commonmod.o +process.o : mofiles/commonmod.o +portlogger.o : mofiles/commonmod.o +mofiles/ods.o : mofiles/commonmod.o +newdashboard.o : mofiles/commonmod.o +mtut.o : mofiles/commonmod.o +mt.o : mofiles/commonmod.o +megatest.o : mofiles/commonmod.o +lock-queue.o : mofiles/commonmod.o +launch.o : mofiles/commonmod.o +items.o : mofiles/commonmod.o +index-tree.o : mofiles/commonmod.o +http-transport.o : mofiles/commonmod.o +genexample.o : mofiles/commonmod.o +ezsteps.o : mofiles/commonmod.o +env.o : mofiles/commonmod.o +diff-report.o : mofiles/commonmod.o +mofiles/dcommonmod.o : mofiles/commonmod.o +dcommon.o : mofiles/commonmod.o +mofiles/dbmod.o : mofiles/commonmod.o +db.o : mofiles/commonmod.o +dashboard.o : mofiles/commonmod.o +dashboard-tests.o : mofiles/commonmod.o +dashboard-guimonitor.o : mofiles/commonmod.o dashboard-context-menu.o : mofiles/commonmod.o -dashboard-context-menu.o : mofiles/configfmod.o -dashboard-context-menu.o : mofiles/dbmod.o -dashboard-guimonitor.o : common.o -dashboard-guimonitor.o : db.o -dashboard-guimonitor.o : tasks.o -dashboard-guimonitor.o : mofiles/commonmod.o -dashboard-guimonitor.o : mofiles/dbmod.o -dashboard.o : common.o -dashboard.o : margs.o -dashboard.o : items.o -dashboard.o : db.o -dashboard.o : configf.o -dashboard.o : process.o -dashboard.o : launch.o -dashboard.o : runs.o -dashboard.o : dashboard-tests.o -dashboard.o : dashboard-guimonitor.o -dashboard.o : tree.o -dashboard.o : dcommon.o -dashboard.o : dashboard-context-menu.o -dashboard.o : vg.o -dashboard.o : subrun.o -dashboard.o : mt.o -dashboard.o : mofiles/commonmod.o -# dashboard.o : commonmod.import.o -dashboard.o : mofiles/configfmod.o -# dashboard.o : configfmod.import.o -dashboard.o : mofiles/dcommonmod.o -# dashboard.o : dcommonmod.import.o -dashboard.o : mofiles/apimod.o +mofiles/configfmod.o : mofiles/commonmod.o +configf.o : mofiles/commonmod.o +common.o : mofiles/commonmod.o +client.o : mofiles/commonmod.o +archive.o : mofiles/commonmod.o +mofiles/apimod.o : mofiles/commonmod.o +api.o : mofiles/commonmod.o +tree.o : mofiles/dbmod.o +tests.o : mofiles/dbmod.o +tdb.o : mofiles/dbmod.o +tasks.o : mofiles/dbmod.o +synchash.o : mofiles/dbmod.o +subrun.o : mofiles/dbmod.o +mofiles/servermod.o : mofiles/dbmod.o +server.o : mofiles/dbmod.o +runs.o : mofiles/dbmod.o +mofiles/rmtmod.o : mofiles/dbmod.o +rmt.o : mofiles/dbmod.o +portlogger.o : mofiles/dbmod.o +newdashboard.o : mofiles/dbmod.o +mt.o : mofiles/dbmod.o +megatest.o : mofiles/dbmod.o +launch.o : mofiles/dbmod.o +http-transport.o : mofiles/dbmod.o +ezsteps.o : mofiles/dbmod.o +dcommon.o : mofiles/dbmod.o +db.o : mofiles/dbmod.o dashboard.o : mofiles/dbmod.o -dashboard.o : mofiles/servermod.o -dashboard-tests.o : common.o -dashboard-tests.o : db.o -dashboard-tests.o : gutils.o -dashboard-tests.o : rmt.o -dashboard-tests.o : ezsteps.o -dashboard-tests.o : subrun.o -dashboard-tests.o : mofiles/commonmod.o -dashboard-tests.o : mofiles/configfmod.o dashboard-tests.o : mofiles/dbmod.o -mofiles/dbmod.o : mofiles/commonmod.o -mofiles/dbmod.o : ods.o -mofiles/dbmod.o : mofiles/configfmod.o -db.o : common.o -db.o : client.o -db.o : mt.o -db.o : mofiles/commonmod.o -db.o : mofiles/configfmod.o -db.o : mofiles/dbmod.o +dashboard-guimonitor.o : mofiles/dbmod.o +dashboard-context-menu.o : mofiles/dbmod.o +common.o : mofiles/dbmod.o +client.o : mofiles/dbmod.o +archive.o : mofiles/dbmod.o +api.o : mofiles/dbmod.o +dcommon.o : mofiles/dcommonmod.o +dashboard.o : mofiles/dcommonmod.o +tests.o : mofiles/servermod.o +server.o : mofiles/servermod.o +runs.o : mofiles/servermod.o +rmt.o : mofiles/servermod.o +megatest.o : mofiles/servermod.o +http-transport.o : mofiles/servermod.o +dcommon.o : mofiles/servermod.o db.o : mofiles/servermod.o -mofiles/dcommonmod.o : mofiles/commonmod.o -mofiles/dcommonmod.o : mofiles/configfmod.o -dcommon.o : gutils.o -dcommon.o : db.o -dcommon.o : mofiles/commonmod.o -dcommon.o : mofiles/dbmod.o -dcommon.o : mofiles/configfmod.o -dcommon.o : mofiles/dcommonmod.o -dcommon.o : mofiles/servermod.o -diff-report.o : common.o -diff-report.o : rmt.o -diff-report.o : mofiles/commonmod.o -env.o : mofiles/commonmod.o -ezsteps.o : db.o -ezsteps.o : common.o -ezsteps.o : items.o -ezsteps.o : runconfig.o -ezsteps.o : mofiles/commonmod.o +dashboard.o : mofiles/servermod.o +common.o : mofiles/servermod.o +client.o : mofiles/servermod.o +tests.o : mofiles/configfmod.o +tasks.o : mofiles/configfmod.o +subrun.o : mofiles/configfmod.o +mofiles/servermod.o : mofiles/configfmod.o +server.o : mofiles/configfmod.o +runs.o : mofiles/configfmod.o +rmt.o : mofiles/configfmod.o +portlogger.o : mofiles/configfmod.o +newdashboard.o : mofiles/configfmod.o +mtut.o : mofiles/configfmod.o +mtexec.o : mofiles/configfmod.o +mt.o : mofiles/configfmod.o +megatest.o : mofiles/configfmod.o +launch.o : mofiles/configfmod.o +items.o : mofiles/configfmod.o +http-transport.o : mofiles/configfmod.o ezsteps.o : mofiles/configfmod.o -ezsteps.o : mofiles/dbmod.o -genexample.o : mofiles/commonmod.o -http-transport.o : common.o -http-transport.o : db.o -http-transport.o : portlogger.o -http-transport.o : rmt.o -http-transport.o : mofiles/commonmod.o -http-transport.o : mofiles/configfmod.o -http-transport.o : mofiles/dbmod.o -http-transport.o : mofiles/servermod.o -index-tree.o : lock-queue.o -index-tree.o : db.o -index-tree.o : common.o -index-tree.o : items.o -index-tree.o : runconfig.o -index-tree.o : mofiles/commonmod.o -items.o : common.o -items.o : mofiles/commonmod.o -items.o : mofiles/configfmod.o -launch.o : subrun.o -launch.o : common.o -launch.o : configf.o -launch.o : db.o -launch.o : ezsteps.o -launch.o : mofiles/commonmod.o -launch.o : mofiles/configfmod.o -launch.o : mofiles/dbmod.o -lock-queue.o : common.o -lock-queue.o : tasks.o -lock-queue.o : mofiles/commonmod.o -megatest.o : common.o -megatest.o : margs.o -megatest.o : runs.o -megatest.o : launch.o -megatest.o : server.o -megatest.o : client.o -megatest.o : tests.o -megatest.o : genexample.o -megatest.o : db.o -megatest.o : tdb.o -megatest.o : mt.o -megatest.o : api.o -megatest.o : env.o -megatest.o : diff-report.o -megatest.o : mofiles/commonmod.o -# megatest.o : commonmod.import.o -megatest.o : mofiles/configfmod.o -# megatest.o : configfmod.import.o -megatest.o : ods.o -# megatest.o : ods.import.o -megatest.o : mofiles/dbmod.o -# megatest.o : dbmod.import.o -megatest.o : mofiles/servermod.o -# megatest.o : servermod.import.o +mofiles/dcommonmod.o : mofiles/configfmod.o +dcommon.o : mofiles/configfmod.o +mofiles/dbmod.o : mofiles/configfmod.o +db.o : mofiles/configfmod.o +dashboard.o : mofiles/configfmod.o +dashboard-tests.o : mofiles/configfmod.o +dashboard-context-menu.o : mofiles/configfmod.o +configf.o : mofiles/configfmod.o +common.o : mofiles/configfmod.o +archive.o : mofiles/configfmod.o +tdb.o : mofiles/ods.o +megatest.o : mofiles/ods.o +mofiles/dbmod.o : mofiles/ods.o +mofiles/rmtmod.o : mofiles/apimod.o +rmt.o : mofiles/apimod.o megatest.o : mofiles/apimod.o -# megatest.o : apimod.import.o -megatest.o : mofiles/rmtmod.o -# megatest.o : rmtmod.import.o -mlaunch.o : db.o -mlaunch.o : common.o -monitor.o : db.o -monitor.o : common.o -monitor.o : items.o -monitor.o : runconfig.o -mtexec.o : margs.o -mtexec.o : configf.o -mtexec.o : mofiles/configfmod.o -mt.o : db.o -mt.o : common.o -mt.o : tests.o -mt.o : rmt.o -mt.o : mofiles/commonmod.o -mt.o : mofiles/configfmod.o -mt.o : mofiles/dbmod.o -mtut.o : common.o -mtut.o : margs.o -mtut.o : configf.o -mtut.o : mofiles/commonmod.o -mtut.o : mofiles/configfmod.o -newdashboard.o : common.o -newdashboard.o : megatest-version.o -newdashboard.o : margs.o -newdashboard.o : mofiles/commonmod.o -newdashboard.o : mofiles/dbmod.o -newdashboard.o : dcommon.o -newdashboard.o : mofiles/configfmod.o -ods.o : mofiles/commonmod.o -portlogger.o : db.o -portlogger.o : mofiles/commonmod.o -portlogger.o : mofiles/configfmod.o -portlogger.o : mofiles/dbmod.o -process.o : mofiles/commonmod.o -mofiles/rmtmod.o : mofiles/commonmod.o -mofiles/rmtmod.o : mofiles/apimod.o -mofiles/rmtmod.o : mofiles/dbmod.o -rmt.o : api.o -rmt.o : http-transport.o -rmt.o : mofiles/commonmod.o -rmt.o : mofiles/apimod.o +dashboard.o : mofiles/apimod.o +api.o : mofiles/apimod.o rmt.o : mofiles/rmtmod.o -rmt.o : mofiles/dbmod.o -rmt.o : mofiles/configfmod.o -rmt.o : mofiles/servermod.o -runconfig.o : common.o -runconfig.o : mofiles/commonmod.o -runs.o : db.o -runs.o : common.o -runs.o : items.o -runs.o : runconfig.o -runs.o : tests.o -runs.o : server.o -runs.o : mt.o -runs.o : archive.o -runs.o : mofiles/commonmod.o -runs.o : mofiles/configfmod.o -runs.o : mofiles/dbmod.o -runs.o : mofiles/servermod.o -mofiles/servermod.o : mofiles/commonmod.o -mofiles/servermod.o : mofiles/configfmod.o -mofiles/servermod.o : mofiles/dbmod.o -server.o : common.o -server.o : db.o -server.o : http-transport.o -server.o : launch.o -server.o : mofiles/commonmod.o -server.o : mofiles/dbmod.o -server.o : mofiles/configfmod.o -server.o : mofiles/servermod.o -sharedat.o : configf.o -sharedat.o : margs.o -sharedat.o : megatest-version.o -spublish.o : margs.o -subrun.o : db.o -subrun.o : common.o -subrun.o : mt.o -subrun.o : mofiles/commonmod.o -subrun.o : mofiles/configfmod.o -subrun.o : mofiles/dbmod.o -synchash.o : db.o -synchash.o : server.o -synchash.o : mofiles/dbmod.o -tasks.o : db.o -tasks.o : rmt.o -tasks.o : common.o -tasks.o : cgisetup/models/pgdb.o -tasks.o : mofiles/commonmod.o -tasks.o : mofiles/configfmod.o -tasks.o : mofiles/dbmod.o -tcmt.o : margs.o -tcmt.o : rmt.o -tcmt.o : common.o -tcmt.o : mofiles/commonmod.o -tdb.o : common.o -tdb.o : client.o -tdb.o : mt.o -tdb.o : db.o -tdb.o : mofiles/commonmod.o -tdb.o : mofiles/dbmod.o -tdb.o : ods.o -tests.o : lock-queue.o -tests.o : db.o -tests.o : tdb.o -tests.o : common.o -tests.o : items.o -tests.o : runconfig.o -tests.o : server.o -tests.o : mofiles/commonmod.o -tests.o : mofiles/dbmod.o -tests.o : mofiles/configfmod.o -tests.o : mofiles/servermod.o -tree.o : margs.o -tree.o : launch.o -tree.o : gutils.o -tree.o : db.o -tree.o : server.o -tree.o : dcommon.o -tree.o : mofiles/commonmod.o -tree.o : mofiles/dbmod.o -ulex.o : pkts.o +megatest.o : mofiles/rmtmod.o Index: utils/gendeps.scm ================================================================== --- utils/gendeps.scm +++ utils/gendeps.scm @@ -28,26 +28,33 @@ (define (mofiles-adjust->dot-o inf) (regex-case inf ("^.*mod$" _ (conc "mofiles/"inf".o")) + ("ods" _ (conc "mofiles/"inf".o")) ("pgdb" _ (conc "cgisetup/models/"inf".o")) (else (conc inf".o")))) +(define (hh-push ht k1 val) + (hash-table-set! ht k1 (cons val (hash-table-ref/default ht k1 '())))) + (define (compunit targfname files) (let* ((unitdata (make-hash-table)) (moduledata (make-hash-table)) + (incldata (make-hash-table)) (filesdata (make-hash-table)) (unitdec (regexp "^\\(declare\\s+\\(unit\\s+([^\\s]+)\\)\\)")) (unituse (regexp "^\\(declare\\s+\\(uses\\s+([^\\s]+)\\)\\)")) - (moduledec (regexp "^\\(module\\s+([\\s]+)")) + (moduledec (regexp "^\\(module\\s+([\\S]+).*")) (importuse (regexp "^\\(import\\s+(.*)\\)")) ;; captures string of imports (one line) (dotport (open-output-file (conc targfname ".dot"))) + (incdotport (open-output-file (conc targfname"-inc.dot"))) (incport (open-output-file (conc targfname ".inc"))) ) - (portprint dotport "digraph usedeps {") - (portprint incport "# To regenerate this file do: + (portprint dotport "digraph usedeps {") + (portprint incdotport "digraph usedeps {") + (portprint incport "# To regenerate this file do: # (cd utils/;ck52 csc gendeps.scm) && ./utils/gendeps allunits *scm # cp allunits.inc build.inc # ") (for-each @@ -65,26 +72,46 @@ (unitdec (_ unitname) (if (equal? sname unitname) ;; good if same (if (not (hash-table-exists? unitdata unitname)) (hash-table-set! unitdata unitname (make-hash-table))))) (unituse (_ usingname) - (portprint dotport "\""usingname"\" -> \""sname"\"") - (portprint incport - (if (or (string-search ".import$" sname) - (string-search ".import$" usingname)) - "# " - "") - (mofiles-adjust->dot-o sname)" : " - (mofiles-adjust->dot-o usingname))) - ;; (moduledec (_ modname) (print "Module: " modname)) - ;; (importuse (_ importname) (print "Imports: " importname)) + (portprint dotport "\""usingname"\" -> \""sname"\"")) + (moduledec (_ modname) + (print "Found module "modname) + (hash-table-set! moduledata modname sname)) + (importuse (_ importname) + (print "Found import "importname) + (hh-push incldata importname sname)) (else #f)) (loop (read-line))))))))) files) + (hash-table-for-each + incldata + (lambda (impname snames) + (for-each + (lambda (sname) + (if (hash-table-exists? moduledata impname) + (make-inc-entry incport incdotport sname impname) + (print "No module file found for import " impname) + )) + snames))) (portprint dotport "}") + (portprint incdotport "}") (close-output-port dotport) - (close-output-port incport))) + (close-output-port incport) + (close-output-port incdotport))) + +(define (make-inc-entry incport incdotport sname impname) + (let* ((leftname (mofiles-adjust->dot-o sname)) + (rightname (mofiles-adjust->dot-o impname))) + (portprint incport + (if (or (string-search ".import$" sname) + (string-search ".import$" impname)) + "# " + "") + leftname" : "rightname) + (portprint incdotport "\""impname"\" -> \""sname"\""))) ;; seen is hash of seen functions (define usage "Usage: gendeps targfile files... ")