ffi: Punt AUXDIR from shim-config.scm.
authorMatt Birkholz <puck@birchwood-abbey.net>
Thu, 8 May 2014 04:22:58 +0000 (21:22 -0700)
committerMatt Birkholz <puck@birchwood-abbey.net>
Thu, 8 May 2014 04:22:58 +0000 (21:22 -0700)
Procedures like compile-shim need to use the first directory in
MITSCHEME_LIBRARY_PATH (not the installation directory) so that the
FFI test can override it, getting the not-yet-installed configuration
from the build directory.

Symlink shim-config.scm to src/lib/ and generate it during `make all',
not `make install', so that it is available to the test FFI (during
`make check').

Fix FFI test NOT to use with-notification around `make', which cannot
use fresh-line.  Just write whole lines to notification-output-port.

src/Setup.sh
src/ffi/build.scm
src/microcode/makegen/Makefile.in.in
tests/ffi/test-ffi.scm

index cd75b2ed71ce58be6f5003798e3eaadf3106b0fa..be58b94cb6360f5fbfa3e2e1f24aad0afd962565 100755 (executable)
@@ -82,6 +82,7 @@ OTHER_SUBDIRS="6001 compiler rcs runtime win32 xdoc microcode"
 maybe_mkdir lib
 maybe_link lib/include ../microcode
 maybe_link lib/mit-scheme.h ../microcode/pruxffi.h
+maybe_link lib/shim-config.scm ../microcode/shim-config.scm
 maybe_link lib/optiondb.scm ../etc/optiondb.scm
 
 maybe_link lib/compiler ../compiler
index e31bcb5b9c214d50a392a651a49ca2f7d37b136c..63bd5a1461d6adab40df4c20f7fe9f3941c03c12 100644 (file)
@@ -28,12 +28,11 @@ USA.
 ;;; package: (ffi build)
 
 (define (compile-shim)
-  (let ((vals (conf-values (shim-conf) 'COMPILE-SHIM))
-       (auxdir (conf-value (shim-conf) 'AUXDIR)))
+  (let ((vals (conf-values (shim-conf) 'COMPILE-SHIM)))
     (let ((prefix (append
                   (filter (lambda (i) (not (string=? "-DMIT_SCHEME" i)))
                           (parse-words (car vals)))
-                  (list (string-append "-I" auxdir))
+                  (list (string-append "-I" (auxdir)))
                   (parse-words (cadr vals)))))
       (run-command (append prefix (command-line))))))
 
@@ -48,25 +47,21 @@ USA.
   (guarantee-string libname 'INSTALL-SHIM)
   (if (string-find-next-char libname #\/)
       (error "Directory separator, #\/, in library name:" libname))
-  (let ((conf (shim-conf)))
-    (let ((install (conf-words conf 'INSTALL))
-         (auxdir (conf-value conf 'AUXDIR)))
-      (run-command (append install
-                          (list (string-append libname "-shim.so")
-                                (string-append libname "-types.bin")
-                                (string-append libname "-const.bin")
-                                (string-append destdir auxdir)))))))
+  (run-command (append (conf-words (shim-conf) 'INSTALL)
+                      (list (string-append libname "-shim.so")
+                            (string-append libname "-types.bin")
+                            (string-append libname "-const.bin")
+                            (string-append destdir (auxdir))))))
 
 (define (install-load-option destdir name #!optional directory)
   (guarantee-string destdir 'INSTALL-LOAD-OPTION)
   (guarantee-string name 'INSTALL-LOAD-OPTION)
-  (let ((conf (shim-conf))
-       (dir (if (default-object? directory)
+  (let ((dir (if (default-object? directory)
                 name
                 directory)))
     (guarantee-string dir 'INSTALL-LOAD-OPTION)
-    (let ((install (conf-words conf 'INSTALL))
-         (auxdir (conf-value conf 'AUXDIR)))
+    (let ((install (conf-words (shim-conf) 'INSTALL))
+         (auxdir (auxdir)))
       (let ((library-dir (string-append destdir auxdir dir)))
        (run-command (list "rm" "-rf" library-dir))
        (run-command (list "mkdir" library-dir))
@@ -181,12 +176,17 @@ USA.
 
   (copy-suffix (copy-items)))
 \f
+(define (auxdir)
+  (->namestring (system-library-directory-pathname)))
+
 (define (shim-conf)
-  (load (system-library-pathname "shim-config.scm")))
+  (fluid-let ((load/suppress-loading-message? #t))
+    (load (system-library-pathname "shim-config.scm"))))
 
 (define (doc-conf)
-  (load (string-append (conf-value (shim-conf) 'INFODIR)
-                      "mit-scheme-doc-config.scm")))
+  (fluid-let ((load/suppress-loading-message? #t))
+    (load (string-append (conf-value (shim-conf) 'INFODIR)
+                                    "mit-scheme-doc-config.scm"))))
 
 (define (conf-values conf name)
   (let ((entry (assq name conf)))
index 6f45851094dc9d04951ed99354033d03e7389f65..4045791e7e9d496632379e8939e0c0450b5b6858 100644 (file)
@@ -120,7 +120,7 @@ MODULE_LIBS = -lc
 
 aux_PROGRAMS = @AUX_PROGRAMS@
 aux_LIBS = $(MODULE_TARGETS)
-aux_DATA = @AUX_DATA@
+aux_DATA = shim-config.scm @AUX_DATA@
 EXTRA_PROGRAMS = findprim
 
 scheme_SOURCES = $(STD_SOURCES) usrdef.c $(LIARC_SOURCES)
@@ -269,7 +269,7 @@ install-auxLIBS: $(aux_LIBS)
            fi; \
        done
 
-install-auxDATA: shim-config.scm $(aux_DATA)
+install-auxDATA: $(aux_DATA)
        $(mkinstalldirs) $(DESTDIR)$(AUXDIR)
        @list='$(aux_DATA)'; \
        for p in $$list; do \
@@ -279,7 +279,6 @@ install-auxDATA: shim-config.scm $(aux_DATA)
            fi; \
        done
        $(INSTALL_DATA) pruxffi.h $(DESTDIR)$(AUXDIR)/mit-scheme.h
-       $(INSTALL_DATA) shim-config.scm $(DESTDIR)$(AUXDIR)/shim-config.scm
 
 shim-config.scm:
        @echo "Saving shim compile/link/install configuration."
@@ -288,8 +287,7 @@ shim-config.scm:
            echo "                \"@CFLAGS@ @MODULE_CFLAGS@\")"; \
            echo "  (LINK-SHIM \"@CCLD@ @LDFLAGS@\" \"@MODULE_LDFLAGS@\")"; \
            echo "  (INSTALL \"@INSTALL_DATA@\")"; \
-           echo "  (INFODIR \"$(infodir)/\")"; \
-           echo "  (AUXDIR \"$(AUXDIR)/\")))" ) >shim-config.scm
+           echo "  (INFODIR \"$(infodir)/\")))" ) >shim-config.scm
 
 install-include:
        $(mkinstalldirs) $(DESTDIR)$(AUXDIR)
index 90d5d3c07128d703de8ed3a8832f1ac62864ce31..52c6b81ddca5dcda355408e30bbcd1a6416cfd8f 100644 (file)
@@ -28,15 +28,16 @@ USA.
 
 (with-working-directory-pathname (directory-pathname (current-load-pathname))
   (lambda ()
-    (let ((code
-          (with-notification
-           (lambda (port)
-             (write-string "make all" port)
-             (newline port))
-           (lambda ()
-             (run-synchronous-subprocess "make" (list "all"))))))
-      (if (not (zero? code))
-         (warn "Test library build failed:" code)
+    (let ((port (notification-output-port)))
+      (fresh-line port)
+      (write-string "make all in tests/ffi/" port)
+      (newline port))
+    (let ((status (run-synchronous-subprocess "make" (list "all"))))
+      (if (not (zero? status))
+         (begin
+           (write-string "../tests/ffi/test-ffi.scm:0: Test FFI build failed."
+                         (notification-output-port))
+           (error "Test FFI build failed:" status))
          (begin
            (fluid-let ((load/suppress-loading-message? #t))
              (load-option 'FFI))