Re: [PATCH] Fix for #1788

2021-10-05 Thread Peter Bex
On Tue, Sep 28, 2021 at 04:52:26PM +0200, felix.winkelm...@bevuta.com wrote:
> Hi!
> 
> The attached patch should fix the issue of builtin module ids appearing in 
> generated
> ..link files.

Thanks, pushed!

Cheers,
Peter


signature.asc
Description: PGP signature


[PATCH] Fix for #1788

2021-09-28 Thread felix . winkelmann
Hi!

The attached patch should fix the issue of builtin module ids appearing in 
generated
..link files.


felix

From aaac013083bf1dd8bef0516b8f07d0b3756f2231 Mon Sep 17 00:00:00 2001
From: felix 
Date: Tue, 28 Sep 2021 16:50:03 +0200
Subject: [PATCH] Ensure required-libraries always contains loadable units

##sys#process-require distinguishes again between core/builtin requirements and 
loadable ones,
which was dropped in 41a1decf. This should fix #1788.
Added flimsy little test.
---
 batch-driver.scm|  4 ++--
 core.scm| 18 +++---
 eval.scm| 33 -
 tests/sample-module.scm |  1 +
 4 files changed, 34 insertions(+), 22 deletions(-)

diff --git a/batch-driver.scm b/batch-driver.scm
index 3f456531..6f1d5f56 100644
--- a/batch-driver.scm
+++ b/batch-driver.scm
@@ -676,7 +676,7 @@
   (initialize-analysis-database)
 
   ;; collect requirements and load inline files
-  (let ((extensions (remove chicken.load#core-unit? 
required-libraries)))
+  (let ((extensions required-libraries))
 (when enable-inline-files
   (for-each
(lambda (id)
@@ -851,7 +851,7 @@
 
   ;; generate link file
  (when emit-link-file
-   (let ((exts (remove chicken.load#core-unit? 
required-libraries)))
+   (let ((exts required-libraries))
  (dribble "generating link file `~a' ..." 
emit-link-file)
  (with-output-to-file emit-link-file (cut pp 
exts
 
diff --git a/core.scm b/core.scm
index 630bfd04..0b980913 100644
--- a/core.scm
+++ b/core.scm
@@ -738,13 +738,17 @@
((##core#require)
 (let ((lib (cadr x))
   (mod (and (pair? (cddr x)) (caddr x
-  (set! required-libraries (lset-adjoin/eq? 
required-libraries lib))
-  (walk (##sys#process-require
- lib mod
- (if (or (memq lib linked-libraries) 
static-extensions)
- 'static
- 'dynamic))
-e dest ldest h ln #f)))
+  (let-values (((reqform builtin) 
+  (##sys#process-require
+   lib mod
+   (if (or (memq lib linked-libraries) 
+   static-extensions)
+ 'static
+ 'dynamic
+ (unless builtin
+   (set! required-libraries 
+ (lset-adjoin/eq? required-libraries lib)))
+ (walk reqform e dest ldest h ln #f
 
((##core#let)
 (let* ((bindings (cadr x))
diff --git a/eval.scm b/eval.scm
index 9421e83d..ce388eb1 100644
--- a/eval.scm
+++ b/eval.scm
@@ -596,8 +596,9 @@
 
 [(##core#require)
  (let ((lib (cadr x))
-   (mod (and (pair? (cddr x)) (caddr x
-   (compile (##sys#process-require lib mod #f) e #f tf 
cntr #f))]
+(mod (and (pair? (cddr x)) (caddr x
+(let-values (((reqform _) (##sys#process-require 
lib mod #f)))
+ (compile reqform e #f tf cntr #f)))]
 
 [(##core#elaborationtimeonly 
##core#elaborationtimetoo) ; <- Note this!
  (##sys#eval/meta (cadr x))
@@ -1250,20 +1251,26 @@
 (define (##sys#process-require lib mod compile-mode)
   (let ((mod (or (eq? lib mod) mod)))
 (cond
-  ((assq lib core-unit-requirements) => cdr)
-  ((memq lib builtin-features) '(##core#undefined))
+  ((assq lib core-unit-requirements) => 
+(lambda (a) (values (cdr a) #f)))
+  ((memq lib builtin-features) 
+(values '(##core#undefined) #t))
   ((memq lib core-units)
-   (if compile-mode
-  `(##core#callunit ,lib)
-  `(chicken.load#load-unit (##core#quote ,lib)
-   (##core#quote #f)
-   (##core#quote #f
+(values
+  (if compile-mode
+ `(##core#callunit ,lib)
+ `(chicken.load#load-unit (##core#quote ,lib)
+  (##core#quote #f)
+  (##core#quote #f)))
+  #t))
   ((eq? compile-mode 'static)
-   `(##core#callunit ,lib))
+   (values `(##core#callunit