diff options
author | vyzo <vyzo@hackzen.org> | 2024-02-23 21:46:17 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-23 14:46:17 -0500 |
commit | 33fb6b109eab4d64730558efa37cbc60ba90649d (patch) | |
tree | d800b8e383f4332d8b33a9ac2ae252f8af6c1650 | |
parent | 1ddc3ede30a21e9ababf0acdd0100a14b95c8ff2 (diff) |
consistently take local package context into account in gerbil tools (#1132)
So that we dont have to `gerbil env gerbil test` and :facepalm:
Also, #1131 didn't quite fix the bug :scream_cat:
-rw-r--r-- | src/std/interface.ss | 2 | ||||
-rwxr-xr-x | src/tools/build.ss | 3 | ||||
-rw-r--r-- | src/tools/env.ss | 14 | ||||
-rw-r--r-- | src/tools/gxensemble.ss | 4 | ||||
-rw-r--r-- | src/tools/gxprof.ss | 4 | ||||
-rw-r--r-- | src/tools/gxtags.ss | 4 | ||||
-rw-r--r-- | src/tools/gxtest.ss | 4 |
7 files changed, 29 insertions, 6 deletions
diff --git a/src/std/interface.ss b/src/std/interface.ss index b4fc81e6..15ffc8a9 100644 --- a/src/std/interface.ss +++ b/src/std/interface.ss @@ -568,7 +568,7 @@ instance-satisfies-predicate: (quote-syntax instance-predicate) implementation-methods: [(quote-syntax method-impl-name) ...] unchecked-implementation-methods: [(quote-syntax unchecked-method-impl-name) ...])))) - #'(begin defklass defdescriptor defmake defpred defpred-instance definfo + #'(begin defklass defdescriptor defmake deftry-make defpred defpred-instance definfo defmethod-impl ...))))) (defsyntax-for-export (interface-out stx) diff --git a/src/tools/build.ss b/src/tools/build.ss index c1005cdd..20820079 100755 --- a/src/tools/build.ss +++ b/src/tools/build.ss @@ -3,7 +3,8 @@ (import :std/build-script) (defbuild-script - '("gxprof" + '("env" + "gxprof" "gxtags" "gxpkg" "gxtest" diff --git a/src/tools/env.ss b/src/tools/env.ss new file mode 100644 index 00000000..684640fe --- /dev/null +++ b/src/tools/env.ss @@ -0,0 +1,14 @@ +;;; -*- Gerbil -*- +;;; © vyzo +;;; common environment context for tools +(import (only-in :gerbil/runtime/init cons-load-path)) +(export #t) + +(def (setup-local-env!) + (unless (getenv "GERBIL_PATH" #f) + (let* ((here (path-normalize (current-directory))) + (gerbil.pkg (path-expand "gerbil.pkg" here)) + (gerbil-path (path-expand ".gerbil" here))) + (when (and (file-exists? gerbil.pkg) (file-exists? gerbil-path)) + (setenv "GERBIL_PATH" gerbil-path) + (cons-load-path (path-expand "lib" gerbil-path)))))) diff --git a/src/tools/gxensemble.ss b/src/tools/gxensemble.ss index 89374e71..301b2e90 100644 --- a/src/tools/gxensemble.ss +++ b/src/tools/gxensemble.ss @@ -16,7 +16,8 @@ :std/misc/process :std/os/hostname :std/sugar - :std/text/hex) + :std/text/hex + ./env) (export main) (def (main . args) @@ -414,6 +415,7 @@ gopts ...)))) (def (gxensemble-main cmd opt) + (setup-local-env!) (dispatch-command cmd opt main-commands)) (defcommand-nested do-admin admin-commands "gxensemble admin" diff --git a/src/tools/gxprof.ss b/src/tools/gxprof.ss index ec073134..960f16dc 100644 --- a/src/tools/gxprof.ss +++ b/src/tools/gxprof.ss @@ -11,7 +11,8 @@ :std/cli/getopt :std/format :std/sort - :std/sugar) + :std/sugar + ./env) (export main) (def (main . args) @@ -33,6 +34,7 @@ help: "arguments to pass to the executable module's main"))) (def (gxprof-main opt) + (setup-local-env!) (let-hash opt (if .?module (let* ((ctx (import-module (module-path .module) #f #t)) diff --git a/src/tools/gxtags.ss b/src/tools/gxtags.ss index b34f059e..f54fb039 100644 --- a/src/tools/gxtags.ss +++ b/src/tools/gxtags.ss @@ -14,7 +14,8 @@ :std/sort (only-in :std/srfi/1 delete-duplicates reverse!) :std/sugar - :std/text/utf8) + :std/text/utf8 + ./env) (export main make-tags) (def (main . args) @@ -33,6 +34,7 @@ help: "source file or directory"))) (def (gxtags-main opt) + (setup-local-env!) (run (hash-ref opt 'input ["."]) (hash-get opt 'output) (hash-get opt 'append) diff --git a/src/tools/gxtest.ss b/src/tools/gxtest.ss index e48228ec..1fc6e84f 100644 --- a/src/tools/gxtest.ss +++ b/src/tools/gxtest.ss @@ -10,7 +10,8 @@ :std/sort :std/srfi/13 :std/sugar - :std/test) + :std/test + ./env) (export main) (def (main . args) @@ -28,6 +29,7 @@ help: "test files or directories to execute tests in; appending /... to a directory will recursively execute or tests in it. If no arguments are passed, all tests in the current directory are executed."))) (def (gxtest-main opt) + (setup-local-env!) (let-hash opt (cond ((null? .args) |