diff options
author | Ludovic Courtès <ludo@gnu.org> | 2019-07-19 00:52:36 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2019-09-29 23:02:35 +0200 |
commit | 7089f98ef1c274f1607ec314f3a16bd3c3ac89a4 (patch) | |
tree | a5d4a43c166cd07e350e4200d377f36bfb429b3d | |
parent | aa2441c2cf0fe5d891bd1714c20e15fedf57e76b (diff) | |
download | patches-7089f98ef1c274f1607ec314f3a16bd3c3ac89a4.tar patches-7089f98ef1c274f1607ec314f3a16bd3c3ac89a4.tar.gz |
syscalls: 'define-as-needed' does not re-export local variables.
Fixes <https://bugs.gnu.org/36723>.
Reported by Timothy Sample <samplet@ngyro.com>.
* guix/build/syscalls.scm (define-as-needed): Rewrite to use lower-level
module primitives; define VARIABLE only if it's not already defined to
avoid "re-exporting local variable" error.
-rw-r--r-- | guix/build/syscalls.scm | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/guix/build/syscalls.scm b/guix/build/syscalls.scm index 3c84d3893f..f2fdb4d9d1 100644 --- a/guix/build/syscalls.scm +++ b/guix/build/syscalls.scm @@ -396,17 +396,11 @@ the returned procedure is called." ((_ (proc args ...) body ...) (define-as-needed proc (lambda* (args ...) body ...))) ((_ variable value) - (begin - (when (module-defined? the-scm-module 'variable) - (re-export variable)) - - (define variable - (if (module-defined? the-scm-module 'variable) - (module-ref the-scm-module 'variable) - value)) - - (unless (module-defined? the-scm-module 'variable) - (export variable)))))) + (if (module-defined? the-scm-module 'variable) + (module-re-export! (current-module) '(variable)) + (begin + (module-define! (current-module) 'variable value) + (module-export! (current-module) '(variable))))))) ;;; |