Index: Makefile ================================================================== --- Makefile +++ Makefile @@ -1,7 +1,7 @@ -PREFIX=. +PREFIX=$(PWD) CSCOPTS= INSTALL=install SRCFILES = common.scm items.scm launch.scm \ ods.scm runconfig.scm server.scm configf.scm \ db.scm keys.scm margs.scm megatest-version.scm \ Index: dashboard-guimonitor.scm ================================================================== --- dashboard-guimonitor.scm +++ dashboard-guimonitor.scm @@ -172,15 +172,16 @@ (iup:attribute-set! tabtop "TABTITLE1" "Collateral") (iup:attribute-set! tabtop "TABTITLE2" "Fossil") (iup:attribute-set! tabtop "TABTITLE3" "Tools") tabtop)))) -(on-exit (lambda () - (let ((tdb (tasks:open-db))) - ;; (print "On-exit called") - (tasks:remove-monitor-record tdb) - (sqlite3:finalize! tdb)))) +;; BUG: Remember to re-instate this!!!! +;; (on-exit (lambda () +;; (let ((tdb (tasks:open-db))) +;; ;; (print "On-exit called") +;; (tasks:remove-monitor-record tdb) +;; (sqlite3:finalize! tdb)))) (define (gui-monitor db) (let ((keys (db:get-keys db)) (tdb (tasks:open-db))) (tasks:register-monitor db tdb) ;;; let the other monitors know we are here Index: dashboard.scm ================================================================== --- dashboard.scm +++ dashboard.scm @@ -635,11 +635,11 @@ (let ((runid (string->number (args:get-arg "-run")))) (if runid (begin (lambda (x) (on-exit (lambda () - (sqlite3:finalize! *db*))) + (if *db* (sqlite3:finalize! *db*)))) (open-run-close examine-run *db* runid))) (begin (print "ERROR: runid is not a number " (args:get-arg "-run")) (exit 1))))) ((args:get-arg "-test") Index: db.scm ================================================================== --- db.scm +++ db.scm @@ -53,11 +53,15 @@ (begin (debug:print-info 11 "db:set-sync, setting pragma synchronous to " val) (sqlite3:execute db (conc "PRAGMA synchronous = '" val "';")))))) (define (open-db) ;; (conc *toppath* "/megatest.db") (car *configinfo*))) - (if (not *toppath*)(setup-for-run)) + (if (not *toppath*) + (if (not (setup-for-run)) + (begin + (debug:print 0 "ERROR: Attempted to open db when not in megatest area. Exiting.") + (exit)))) (let* ((dbpath (conc *toppath* "/megatest.db")) ;; fname) (dbexists (file-exists? dbpath)) (db (sqlite3:open-database dbpath)) ;; (never-give-up-open-db dbpath)) (handler (make-busy-timeout (if (args:get-arg "-override-timeout") (string->number (args:get-arg "-override-timeout")) Index: megatest.scm ================================================================== --- megatest.scm +++ megatest.scm @@ -320,11 +320,12 @@ (format #t fmtstr id mt-ver pid hostname port start-time priority status))) servers) (debug:print-info 1 "Done with listservers") (exit) ;; must do, would have to add checks to many/all calls below - (set! *didsomething* #t)))) + (set! *didsomething* #t)) + (exit))) ;; if not list or kill then start a client (if appropriate) (if (or (args-defined? "-h" "-version" "-gen-megatest-area" "-gen-megatest-test") (eq? (length (hash-table-keys args:arg-hash)) 0)) (debug:print-info 1 "Server connection not needed") ;; ping servers only if -runall -runtests @@ -435,12 +436,12 @@ (db:step-get-status step) (db:step-get-event_time step))) steps))))) tests)))) runs) - (set! *didsomething* #t) - ))) + (set! *didsomething* #t)) + (exit))) ;;====================================================================== ;; full run ;;====================================================================== @@ -458,34 +459,21 @@ ;; if still ok to run tasks ;; process deferred tasks per above steps ;; run all tests are are Not COMPLETED and PASS or CHECK (if (args:get-arg "-runall") - (let ((server-thread #f)) - (if (args:get-arg "-server") - (let ((toppath (setup-for-run)) - (db (open-db))) - (if db - (let* ((host:port (db:get-var db "SERVER")) ;; this doen't support multiple servers BUG!!!! - (th2 (server:start db (args:get-arg "-server"))) - (th3 (make-thread (lambda () - (server:keep-running db host:port))))) - (thread-start! th3) - (set! server-thread th3))))) - (general-run-call - "-runall" - "run all tests" - (lambda (target runname keys keynames keyvallst) - (runs:run-tests target - runname - (if (args:get-arg "-testpatt") - (args:get-arg "-testpatt") - "%/%") - user - args:arg-hash))) - (if server-thread - (thread-join! server-thread)))) + (general-run-call + "-runall" + "run all tests" + (lambda (target runname keys keynames keyvallst) + (runs:run-tests target + runname + (if (args:get-arg "-testpatt") + (args:get-arg "-testpatt") + "%/%") + user + args:arg-hash)))) ;;====================================================================== ;; run one test ;;====================================================================== @@ -896,11 +884,12 @@ (import apropos) (gnu-history-install-file-manager (string-append (or (get-environment-variable "HOME") ".") "/.megatest_history")) (current-input-port (make-gnu-readline-port "megatest> ")) - (repl))) + (repl)) + (exit)) (set! *didsomething* #t))) ;;====================================================================== ;; Exit and clean up ;;====================================================================== Index: server.scm ================================================================== --- server.scm +++ server.scm @@ -29,11 +29,15 @@ #f (conc "tcp://" (car hostport) ":" (cadr hostport)))) (define (server:run hostn) (debug:print 0 "Attempting to start the server ...") - (if (not *toppath*)(setup-for-run)) + (if (not *toppath*) + (if (not (setup-for-run)) + (begin + (debug:print 0 "ERROR: cannot find megatest.config, cannot start server, exiting") + (exit)))) (let* ((zmq-socket #f) (hostname (if (string=? "-" hostn) (get-host-name) hostn)) (ipaddrstr (let ((ipstr (if (string=? "-" hostn) @@ -44,21 +48,23 @@ (set! *cache-on* #t) ;; what to do when we quit ;; (on-exit (lambda () - (open-run-close tasks:server-deregister-self tasks:open-db #f) - (let loop () - (let ((queue-len 0)) - (thread-sleep! (random 5)) - (mutex-lock! *incoming-mutex*) - (set! queue-len (length *incoming-data*)) - (mutex-unlock! *incoming-mutex*) - (if (> queue-len 0) - (begin - (debug:print-info 0 "Queue not flushed, waiting ...") - (loop))))))) + (if (and *toppath* *server-id*) + (begin + (open-run-close tasks:server-deregister-self tasks:open-db #f)) + (let loop () + (let ((queue-len 0)) + (thread-sleep! (random 5)) + (mutex-lock! *incoming-mutex*) + (set! queue-len (length *incoming-data*)) + (mutex-unlock! *incoming-mutex*) + (if (> queue-len 0) + (begin + (debug:print-info 0 "Queue not flushed, waiting ...") + (loop)))))))) ;; The heavy lifting ;; (let loop () (let* ((rawmsg (receive-message* zmq-socket)) @@ -162,11 +168,15 @@ ;; (close-socket zmq-socket) ok)) ;; Do all the connection work, start a server if not already running (define (server:client-setup #!key (numtries 10)(do-ping #f)) - (if (not *toppath*)(setup-for-run)) + (if (not *toppath*) + (if (not (setup-for-run)) + (begin + (debug:print 0 "ERROR: failed to find megatest.config, exiting") + (exit)))) (let ((hostinfo (open-run-close tasks:get-best-server tasks:open-db do-ping: do-ping))) (if hostinfo (let ((host (car hostinfo)) (port (cadr hostinfo))) ;; (zsocket (caddr hostinfo))) @@ -203,25 +213,29 @@ ;; not doing ping, assume the server started and registered itself (server:client-setup numtries: (- numtries 1) do-ping: #f)) (debug:print-info 1 "Too many retries, giving up"))))) (define (server:launch) - (let* ((toppath (setup-for-run))) - (debug:print-info 0 "Starting the standalone server") - (let ((hostinfo (open-run-close tasks:get-best-server tasks:open-db))) - (if hostinfo - (debug:print-info 1 "NOT starting new server, one is already running on " (car hostinfo) ":" (cadr hostinfo)) - (if *toppath* - (let* ((th2 (make-thread (lambda () - (server:run (args:get-arg "-server"))))) - (th3 (make-thread (lambda () - (server:keep-running))))) - (thread-start! th2) - (thread-start! th3) - (set! *didsomething* #t) - (thread-join! th3)) - (debug:print 0 "ERROR: Failed to setup for megatest")))))) + (if (not *toppath*) + (if (not (setup-for-run)) + (begin + (debug:print 0 "ERROR: cannot find megatest.config, exiting") + (exit)))) + (debug:print-info 0 "Starting the standalone server") + (let ((hostinfo (open-run-close tasks:get-best-server tasks:open-db))) + (if hostinfo + (debug:print-info 1 "NOT starting new server, one is already running on " (car hostinfo) ":" (cadr hostinfo)) + (if *toppath* + (let* ((th2 (make-thread (lambda () + (server:run (args:get-arg "-server"))))) + (th3 (make-thread (lambda () + (server:keep-running))))) + (thread-start! th2) + (thread-start! th3) + (set! *didsomething* #t) + (thread-join! th3)) + (debug:print 0 "ERROR: Failed to setup for megatest"))))) (define (server:client-launch #!key (do-ping #f)) (if (server:client-setup do-ping: do-ping) (debug:print-info 2 "connected as client") (begin Index: utils/mk_wrapper ================================================================== --- utils/mk_wrapper +++ utils/mk_wrapper @@ -6,8 +6,8 @@ echo "#!/bin/bash" if [ "$LD_LIBRARY_PATH" != "" ];then echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH" fi -fullcmd=`realpath $prefix/bin/$cmd` +fullcmd="$prefix/bin/$cmd" echo "$fullcmd \$*"