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.
This commit is contained in:
Ludovic Courtès 2019-07-19 00:52:36 +02:00
parent c498a07e2d
commit 96783ed627
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
1 changed files with 5 additions and 11 deletions

View File

@ -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)))))))
;;;