Fix merge.
authorMatt Birkholz <matt@birchwood-abbey.net>
Thu, 28 Dec 2017 08:09:23 +0000 (01:09 -0700)
committerMatt Birkholz <matt@birchwood-abbey.net>
Thu, 28 Dec 2017 08:09:23 +0000 (01:09 -0700)
Remove (runtime blowfish) package.  Move blowfish tests from the core
to the plugin.  Increment blowfish version.  Check documentation.
Remove lingering references to blowfish sources in the core, as well
as gdbm, md5 and mhash.

Add debian config for the new gdbm manual.

23 files changed:
debian/README.Debian
debian/changelog
doc/user-manual/user.texinfo
src/Tags.sh
src/blowfish/Makefile.am
src/blowfish/NEWS
src/blowfish/blowfish-check.scm [deleted file]
src/blowfish/blowfish-check.sh
src/blowfish/blowfish-test.scm [moved from tests/runtime/test-blowfish.scm with 65% similarity]
src/blowfish/blowfish.pkg
src/blowfish/blowfish.scm
src/blowfish/check-doc.sh [new file with mode: 0755]
src/blowfish/configure.ac
src/blowfish/debian/changelog
src/blowfish/make.scm
src/devops/pucked.texi
src/gdbm/debian/doc-base [new file with mode: 0644]
src/gdbm/debian/rules
src/microcode/ntutl/config.h
src/runtime/blowfish.scm [deleted file]
src/runtime/ed-ffi.scm
src/runtime/runtime.pkg
tests/check.scm

index 8f4e43c57e7cfb26142577ee10233891354b81a7..ba4b4d152b8a1496dd38769cc5a965998f299297 100644 (file)
@@ -13,8 +13,6 @@ and installed separately, after Scheme is installed.
         prbfish.so  Blowfish
          prgdbm.so  GDBM
        prmcrypt.so  Mcrypt
-          prmd5.so  MD5
-        prmhash.so  Mhash
           prx11.so  X11, X11-Screen
         prpgsql.so  PGSQL
           prdb4.so
index e0e5d152a5ad7ebe5ea6040f3ec92ee23292ebe9..4d73b5a921695cded461ab85d41455c9a29f72ea 100644 (file)
@@ -1,3 +1,9 @@
+mit-scheme-pucked (9.2.11) birchwood; urgency=low
+
+  * New upstream.  Removes md5 and mhash plugins.
+
+ -- Matt Birkholz <matt@birchwood-abbey.net>  Sun, 24 Dec 2017 12:00:00 -0700
+
 mit-scheme-pucked (9.2.10) birchwood; urgency=low
 
   * Improved support for upgrades.  Typo in user manual.
index d1d45306fa11f382770170fce4734f8c3e51a0a2..55fb3ea566c0951cf986e7d56ab642a9c09fd07a 100644 (file)
@@ -3925,31 +3925,33 @@ you will probably need to load a screen plugin first, e.g.@:
 @code{x11-screen}.
 
 @item
-The @code{(runtime gdbm)} and @code{(runtime x-graphics)} packages
-were removed.  All of their bindings can now be found in the
-@code{(gdbm)} and @code{(x11 graphics)} packages.  Thus @code{(runtime
-gdbm)} should be replaced with @code{(gdbm)} in package descriptions,
-and a @code{(global-definitions gdbm/)} line added.  Similar
-changes are needed if you are using @code{(runtime x-graphics)}.
-
-One original binding cannot be found in the new packages:
-@code{gdbm-available?}.  Generally, @code{-available?} procedures are
+The @code{(runtime blowfish)}, @code{(runtime gdbm)} and
+@code{(runtime x-graphics)} packages were removed.  All of their
+bindings can now be found in the @code{(blowfish)}, @code{(gdbm)} and
+@code{(x11 graphics)} packages.  Thus @code{(runtime blowfish)} should
+be replaced with @code{(blowfish)} in package descriptions, and a
+@code{(global-definitions blowfish/)} line added.  Similar changes are
+needed if you are using @code{(runtime gdbm)} or @code{(runtime
+x-graphics)}.
+
+Two original bindings cannot be found in the new packages:
+@code{blowfish-available?} and @code{gdbm-available?}.
+Generally, @code{-available?} procedures are
 not supported.  Plugins are unknown (cannot provide such procedures)
 until @emph{after} they successfully load (at which point such
 procedures are moot).  Thus something like
-@code{(gdbm-available?)}  should be replaced with
-@code{(plugin-available? "gdbm")}.
+@code{(blowfish-available?)}  should be replaced with
+@code{(plugin-available? "blowfish")}.
 
 @item
-The @code{(runtime crypto)} and @code{(runtime blowfish)} packages are
-provided but deprecated.  Their bindings are unassigned until
-corresponding plugins are loaded.  When a band is restored these
-bindings are unassigned again.  Thus a restored thread using them will
-quickly signal an error and can be aborted or restarted as
-appropriate.  Two bindings, @code{blowfish-available?} and
-@code{mcrypt-available?} are assigned procedures that autoload the
-appropriate options.  A restarted thread is assumed to begin again
-with a call to one of these.
+The @code{(runtime crypto)} package is provided but deprecated.  Its
+bindings are unassigned until the corresponding plugin is loaded.
+When a band is restored these bindings are unassigned again.  Thus a
+restored thread using them will quickly signal an error and can be
+aborted or restarted as appropriate.  An @code{mcrypt-available?}
+binding is assigned a procedure that autoloads the mcrypt option.  A
+restarted thread is assumed to begin again with a call to
+@code{mcrypt-available?} (or @code{load-option}).
 
 @item
 Edwin has had a number of screen procedures turned into SOS generic
index 2ebdb9551e04d38520c49e82374239a2ebc5f1fd..f6731b76ccc8c2a97f79def3e1214263fac31d58 100755 (executable)
@@ -29,12 +29,9 @@ set -e
 
 DEFAULT_SUBDIRS=( \
     6001 \
-    blowfish \
     compiler \
     cref \
     ffi \
-    gdbm \
-    mcrypt \
     microcode \
     runtime \
     sf \
index 2040cb74a99ad4d1d4846d42222c114779198819..d93090c2b42e2fe14937137d14245b294a9b9007 100644 (file)
@@ -86,6 +86,9 @@ CLEANFILES += @MIT_SCHEME_CLEAN@
 TESTS = blowfish-check.sh
 CLEANFILES += test
 
+check-local:
+       ./check-doc.sh
+
 tags: tags-am
        ./tags-fix.sh blowfish
 
index b4ed0646960bf234c32105fd350b2a991e9dd4c6..bf67a94dce729617ce91aff4dd814e9ff61831be 100644 (file)
@@ -26,6 +26,11 @@ along with MIT/GNU Scheme; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 02110-1301, USA.
 
+mit-scheme-pucked-blowfish 0.2.3 - Matt Birkholz, 2017-12-26
+============================================================
+
+Upstream includes new blowfish tests.
+
 mit-scheme-pucked-blowfish 0.2.2 - Matt Birkholz, 2017-11-06
 ============================================================
 
diff --git a/src/blowfish/blowfish-check.scm b/src/blowfish/blowfish-check.scm
deleted file mode 100644 (file)
index ae2ca5f..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-#| -*-Scheme-*-
-
-Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
-    1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-    2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016,
-    2017 Massachusetts Institute of Technology
-
-This file is part of MIT/GNU Scheme.
-
-MIT/GNU Scheme is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at
-your option) any later version.
-
-MIT/GNU Scheme is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with MIT/GNU Scheme; if not, write to the Free Software
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301,
-USA.
-
-|#
-
-;;;; Test the BLOWFISH option.
-
-(let ((sample (string->utf8 "Some text to encrypt and decrypt.")))
-  (call-with-binary-output-file "test"
-    (lambda (output)
-      (blowfish-encrypt-port (open-input-bytevector sample)
-                            output
-                            (string->utf8 "secret")
-                            (write-blowfish-file-header output)
-                            #t)))
-  (let ((read-back
-        (call-with-binary-input-file "test"
-          (lambda (input)
-            (call-with-output-bytevector
-             (lambda (output)
-               (blowfish-encrypt-port input output (string->utf8 "secret")
-                                      (read-blowfish-file-header input)
-                                      #f)))))))
-    (if (not (bytevector=? sample read-back))
-       (error "sample did not decrypt correctly"))))
\ No newline at end of file
index edf275a274f43fab04741b95afc2085af5bbdd58..9d40981ceb1a6f7dd2aa9e8d2f50e531f4d3b65d 100755 (executable)
@@ -5,5 +5,5 @@
 set -e
 ${MIT_SCHEME_EXE} --prepend-library . <<\EOF
 (load-option 'BLOWFISH)
-(load "blowfish-check" (->environment '(blowfish)))
+(load "blowfish-test" (->environment '(blowfish)))
 EOF
similarity index 65%
rename from tests/runtime/test-blowfish.scm
rename to src/blowfish/blowfish-test.scm
index 8160b5300f2d5ca217e8d3ded09bbd21b23e852a..5f5f8c1b11b95a8cb08a46bed000f0e2e7f1d4f2 100644 (file)
@@ -26,11 +26,7 @@ USA.
 
 ;;;; Tests of Blowfish
 
-(define (define-bf-test name procedure)
-  (if (blowfish-available?)
-      (define-test name procedure)))
-
-(define (define-variable-key-test i c)
+(define (variable-key-test i c)
   (define k24
     #u8(#xF0 #xE1 #xD2 #xC3 #xB4 #xA5 #x96 #x87
         #x78 #x69 #x5A #x4B #x3C #x2D #x1E #x0F
@@ -38,59 +34,56 @@ USA.
   (define p24 #u8(#xFE #xDC #xBA #x98 #x76 #x54 #x32 #x10))
   (let ((k (bytevector-copy k24 0 i))
         (p p24))
-    (define-bf-test (symbol 'VARIABLE-KEY ': i ': 'ENCRYPT)
-      (lambda ()
-        (let ((bf (blowfish-set-key k))
-              (buf (make-bytevector 8)))
-          (blowfish-ecb p buf bf #t)
-          (assert-equal buf c))))
-    (define-bf-test (symbol 'VARIABLE-KEY ': i ': 'DECRYPT)
-      (lambda ()
-        (let ((bf (blowfish-set-key k))
-              (buf (make-bytevector 8)))
-          (blowfish-ecb c buf bf #f)
-          (assert-equal buf p))))))
+    (let ((bf (blowfish-set-key k))
+         (buf (make-bytevector 8)))
+      (blowfish-ecb p buf bf #t)
+      (if (not (equal? buf c))
+         (error "Test failed:" (symbol 'VARIABLE-KEY ': i ': 'ENCRYPT))))
+    (let ((bf (blowfish-set-key k))
+         (buf (make-bytevector 8)))
+      (blowfish-ecb c buf bf #f)
+      (if (not (equal? buf p))
+         (error "Test failed:" (symbol 'VARIABLE-KEY ': i ': 'DECRYPT))))))
 
-(define-variable-key-test 1 #u8(#xF9 #xAD #x59 #x7C #x49 #xDB #x00 #x5E))
-(define-variable-key-test 2 #u8(#xE9 #x1D #x21 #xC1 #xD9 #x61 #xA6 #xD6))
-(define-variable-key-test 3 #u8(#xE9 #xC2 #xB7 #x0A #x1B #xC6 #x5C #xF3))
-(define-variable-key-test 4 #u8(#xBE #x1E #x63 #x94 #x08 #x64 #x0F #x05))
-(define-variable-key-test 5 #u8(#xB3 #x9E #x44 #x48 #x1B #xDB #x1E #x6E))
-(define-variable-key-test 6 #u8(#x94 #x57 #xAA #x83 #xB1 #x92 #x8C #x0D))
-(define-variable-key-test 7 #u8(#x8B #xB7 #x70 #x32 #xF9 #x60 #x62 #x9D))
-(define-variable-key-test 8 #u8(#xE8 #x7A #x24 #x4E #x2C #xC8 #x5E #x82))
-(define-variable-key-test 9 #u8(#x15 #x75 #x0E #x7A #x4F #x4E #xC5 #x77))
-(define-variable-key-test 10 #u8(#x12 #x2B #xA7 #x0B #x3A #xB6 #x4A #xE0))
-(define-variable-key-test 11 #u8(#x3A #x83 #x3C #x9A #xFF #xC5 #x37 #xF6))
-(define-variable-key-test 12 #u8(#x94 #x09 #xDA #x87 #xA9 #x0F #x6B #xF2))
-(define-variable-key-test 13 #u8(#x88 #x4F #x80 #x62 #x50 #x60 #xB8 #xB4))
-(define-variable-key-test 14 #u8(#x1F #x85 #x03 #x1C #x19 #xE1 #x19 #x68))
-(define-variable-key-test 15 #u8(#x79 #xD9 #x37 #x3A #x71 #x4C #xA3 #x4F))
-(define-variable-key-test 16 #u8(#x93 #x14 #x28 #x87 #xEE #x3B #xE1 #x5C))
-(define-variable-key-test 17 #u8(#x03 #x42 #x9E #x83 #x8C #xE2 #xD1 #x4B))
-(define-variable-key-test 18 #u8(#xA4 #x29 #x9E #x27 #x46 #x9F #xF6 #x7B))
-(define-variable-key-test 19 #u8(#xAF #xD5 #xAE #xD1 #xC1 #xBC #x96 #xA8))
-(define-variable-key-test 20 #u8(#x10 #x85 #x1C #x0E #x38 #x58 #xDA #x9F))
-(define-variable-key-test 21 #u8(#xE6 #xF5 #x1E #xD7 #x9B #x9D #xB2 #x1F))
-(define-variable-key-test 22 #u8(#x64 #xA6 #xE1 #x4A #xFD #x36 #xB4 #x6F))
-(define-variable-key-test 23 #u8(#x80 #xC7 #xD7 #xD4 #x5A #x54 #x79 #xAD))
-(define-variable-key-test 24 #u8(#x05 #x04 #x4B #x62 #xFA #x52 #xD0 #x80))
+(variable-key-test 1 #u8(#xF9 #xAD #x59 #x7C #x49 #xDB #x00 #x5E))
+(variable-key-test 2 #u8(#xE9 #x1D #x21 #xC1 #xD9 #x61 #xA6 #xD6))
+(variable-key-test 3 #u8(#xE9 #xC2 #xB7 #x0A #x1B #xC6 #x5C #xF3))
+(variable-key-test 4 #u8(#xBE #x1E #x63 #x94 #x08 #x64 #x0F #x05))
+(variable-key-test 5 #u8(#xB3 #x9E #x44 #x48 #x1B #xDB #x1E #x6E))
+(variable-key-test 6 #u8(#x94 #x57 #xAA #x83 #xB1 #x92 #x8C #x0D))
+(variable-key-test 7 #u8(#x8B #xB7 #x70 #x32 #xF9 #x60 #x62 #x9D))
+(variable-key-test 8 #u8(#xE8 #x7A #x24 #x4E #x2C #xC8 #x5E #x82))
+(variable-key-test 9 #u8(#x15 #x75 #x0E #x7A #x4F #x4E #xC5 #x77))
+(variable-key-test 10 #u8(#x12 #x2B #xA7 #x0B #x3A #xB6 #x4A #xE0))
+(variable-key-test 11 #u8(#x3A #x83 #x3C #x9A #xFF #xC5 #x37 #xF6))
+(variable-key-test 12 #u8(#x94 #x09 #xDA #x87 #xA9 #x0F #x6B #xF2))
+(variable-key-test 13 #u8(#x88 #x4F #x80 #x62 #x50 #x60 #xB8 #xB4))
+(variable-key-test 14 #u8(#x1F #x85 #x03 #x1C #x19 #xE1 #x19 #x68))
+(variable-key-test 15 #u8(#x79 #xD9 #x37 #x3A #x71 #x4C #xA3 #x4F))
+(variable-key-test 16 #u8(#x93 #x14 #x28 #x87 #xEE #x3B #xE1 #x5C))
+(variable-key-test 17 #u8(#x03 #x42 #x9E #x83 #x8C #xE2 #xD1 #x4B))
+(variable-key-test 18 #u8(#xA4 #x29 #x9E #x27 #x46 #x9F #xF6 #x7B))
+(variable-key-test 19 #u8(#xAF #xD5 #xAE #xD1 #xC1 #xBC #x96 #xA8))
+(variable-key-test 20 #u8(#x10 #x85 #x1C #x0E #x38 #x58 #xDA #x9F))
+(variable-key-test 21 #u8(#xE6 #xF5 #x1E #xD7 #x9B #x9D #xB2 #x1F))
+(variable-key-test 22 #u8(#x64 #xA6 #xE1 #x4A #xFD #x36 #xB4 #x6F))
+(variable-key-test 23 #u8(#x80 #xC7 #xD7 #xD4 #x5A #x54 #x79 #xAD))
+(variable-key-test 24 #u8(#x05 #x04 #x4B #x62 #xFA #x52 #xD0 #x80))
 
 ((lambda (ks ps cs)
    ((lambda (doit) (for-each doit (iota (length ks)) ks ps cs))
     (lambda (i k p c)
-      (define-bf-test (symbol 'ENCRYPT ': i)
-        (lambda ()
-          (let ((bf (blowfish-set-key k))
-                (buf (make-bytevector 8)))
-            (blowfish-ecb p buf bf #t)
-            (assert-equal buf c))))
-      (define-bf-test (symbol 'DECRYPT ': i)
-        (lambda ()
-          (let ((bf (blowfish-set-key k))
-                (buf (make-bytevector 8)))
-            (blowfish-ecb c buf bf #f)
-            (assert-equal buf p)))))))
+      (let ((bf (blowfish-set-key k))
+           (buf (make-bytevector 8)))
+       (blowfish-ecb p buf bf #t)
+       (if (not (equal? buf c))
+           (error "Test failed:" (symbol 'ENCRYPT ': i))))
+      (let ((bf (blowfish-set-key k))
+           (buf (make-bytevector 8)))
+       (blowfish-ecb c buf bf #f)
+       (if (not (equal? buf p))
+           (error "Test failed:" (symbol 'DECRYPT ': i)))))))
+
  '(#u8(#x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00)
    #u8(#xFF #xFF #xFF #xFF #xFF #xFF #xFF #xFF)
    #u8(#x30 #x00 #x00 #x00 #x00 #x00 #x00 #x00)
@@ -194,36 +187,34 @@ USA.
    #u8(#x24 #x59 #x46 #x88 #x57 #x54 #x36 #x9A)
    #u8(#x6B #x5C #x5A #x9C #x5D #x9E #x0A #x5A)))
 
-(define (define-cbc-test i c)
+(define (cbc-test i c)
   (define k #u8(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15))
   (define iv #u8(7 6 5 4 3 2 1 0))
   (define p #u8(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23))
   (let ((p (bytevector-copy p 0 i)))
-    (define-bf-test (symbol 'CBC:ENCRYPT ': i)
-      (lambda ()
-        (let ((bf (blowfish-set-key k))
-              (iv (bytevector-copy iv))
-              (buf (make-bytevector i)))
-          (blowfish-cbc p buf bf iv #t)
-          (assert-equal buf c)
-          (assert-equal iv (bytevector-copy buf (- i 8) i)))))
-    (define-bf-test (symbol 'CBC:DECRYPT ': i)
-      (lambda ()
-        (let ((bf (blowfish-set-key k))
-              (iv (bytevector-copy iv))
-              (buf (make-bytevector i)))
-          (blowfish-cbc c buf bf iv #f)
-          (assert-equal buf p)
-          (assert-equal iv (bytevector-copy c (- i 8) i)))))))
+    (let ((bf (blowfish-set-key k))
+         (iv (bytevector-copy iv))
+         (buf (make-bytevector i)))
+      (blowfish-cbc p buf bf iv #t)
+      (if (not (and (equal? buf c)
+                   (equal? iv (bytevector-copy buf (- i 8) i))))
+         (error "Test failed:" (symbol 'CBC:ENCRYPT ': i))))
+    (let ((bf (blowfish-set-key k))
+         (iv (bytevector-copy iv))
+         (buf (make-bytevector i)))
+      (blowfish-cbc c buf bf iv #f)
+      (if (not (and (equal? buf p)
+                   (equal? iv (bytevector-copy c (- i 8) i))))
+         (error "Test failed:" (symbol 'CBC:DECRYPT ': i))))))
 
-(define-cbc-test 8
+(cbc-test 8
   #u8(#x90 #x6a #xb9 #x17 #xb0 #x9f #xcd #x3a))
 
-(define-cbc-test 16
+(cbc-test 16
   #u8(#x90 #x6a #xb9 #x17 #xb0 #x9f #xcd #x3a
       #x2b #x41 #x4d #x69 #xbb #xa0 #xc0 #xdf))
 
-(define-cbc-test 24
+(cbc-test 24
   #u8(#x90 #x6a #xb9 #x17 #xb0 #x9f #xcd #x3a
       #x2b #x41 #x4d #x69 #xbb #xa0 #xc0 #xdf
-      #xed #x69 #x9e #xca #x55 #x13 #xc2 #x7e))
+      #xed #x69 #x9e #xca #x55 #x13 #xc2 #x7e))
\ No newline at end of file
index 4929860dfc57b88fca109c3a80706f67bda814ba..ec4f4abce32ace5a3546e3c7e4fffc9e929e581d 100644 (file)
@@ -29,7 +29,7 @@ USA.
 (define-package (blowfish)
   (files "blowfish")
   (parent ())
-  (export (blowfish global)
+  (export ()
          blowfish-cbc
          blowfish-cfb64
          blowfish-ecb
@@ -39,8 +39,4 @@ USA.
          blowfish-set-key
          compute-blowfish-init-vector
          read-blowfish-file-header
-         write-blowfish-file-header))
-
-(define-package (blowfish global)
-  ;; Just to get cref to analyze whether all "exports" are defined.
-  )
\ No newline at end of file
+         write-blowfish-file-header))
\ No newline at end of file
index 7cab6e675f0ffd5ef4c27283b8da7e54faf90318..fd3ed80fac244eab402e24983a6c7c95227f37bb 100644 (file)
@@ -29,23 +29,6 @@ USA.
 
 (declare (usual-integrations))
 \f
-(define (import-blowfish)
-  (let ((target-environment (nearest-repl/environment))
-       (source-environment (->environment '(blowfish))))
-    (for-each (lambda (name)
-               (link-variables target-environment name
-                               source-environment name))
-             '(blowfish-cbc
-               blowfish-cfb64
-               blowfish-ecb
-               blowfish-encrypt-port
-               blowfish-file?
-               blowfish-ofb64
-               blowfish-set-key
-               compute-blowfish-init-vector
-               read-blowfish-file-header
-               write-blowfish-file-header))))
-
 (C-include "blowfish")
 
 (define (blowfish-set-key bytes)
diff --git a/src/blowfish/check-doc.sh b/src/blowfish/check-doc.sh
new file mode 100755 (executable)
index 0000000..1802bf4
--- /dev/null
@@ -0,0 +1,148 @@
+#!/bin/bash
+# -*-Scheme-*-
+#
+# Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015,
+#     2016, 2017 Matthew Birkholz
+#
+# This file is part of a Blowfish plugin for MIT/GNU Scheme Pucked.
+#
+# This plugin is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This plugin is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this plugin; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# Check the documentation.
+
+set -e
+: ${MIT_SCHEME_EXE=mit-scheme}
+${MIT_SCHEME_EXE} --batch-mode <<\EOF
+
+(let ((pkgset "blowfish")
+      (texi "blowfish.texi")
+      (pkg '(blowfish)))
+  ;; Check that every binding exported to () or PKG has a
+  ;; corresponding @deffn in TEXI.
+
+  (parameterize ((param:suppress-loading-message? #t))
+    (load-option 'cref)
+    (load-option 'regular-expression))
+  (define read-package-model)
+  (define pmodel/packages)
+  (define package/name)
+  (define package/bindings)
+  (define package/links)
+  (define link/source)
+  (define link/destination)
+  (define binding/package)
+  (define binding/name)
+  (let ((cref (->environment '(cross-reference))))
+    (set! read-package-model (access read-package-model cref))
+    (set! pmodel/packages (access pmodel/packages cref))
+    (set! package/name (access package/name cref))
+    (set! package/bindings (access package/bindings cref))
+    (set! package/links (access package/links cref))
+    (set! link/source (access link/source cref))
+    (set! link/destination (access link/destination cref))
+    (set! binding/package (access binding/package cref))
+    (set! binding/name (access binding/name cref)))
+
+  (define (deffn-name line)
+    (let ((regs (re-string-match
+                (string-append "@deffnx?"
+                               " \\(Class\\|Procedure\\|{Generic Procedure}\\)"
+                               " \\([-A-Za-z0-9<>?!+./:]+\\)")
+                line)))
+      (if regs
+         (intern (re-match-extract line regs 2))
+         (error "Could not find binding name:" line))))
+
+  (define (texinfo-deffns lines)
+    (let ((len (vector-length lines)))
+      (let loop ((i 0) (deffns '()))
+       (if (fix:< i len)
+           (let ((line (vector-ref lines i)))
+             (loop (fix:1+ i)
+                   (if (string-prefix? "@deffn" line)
+                       (cons (deffn-name line) deffns)
+                       deffns)))
+           deffns))))
+
+  (define (read-lines port)
+    (let loop ()
+      (let ((line (read-line port)))
+       (if (eof-object? line)
+           '()
+           (cons line (loop))))))
+
+  (define (pmodel/find-package pmodel package-name)
+    (find-matching-item (pmodel/packages pmodel)
+                       (lambda (p) (equal? package-name (package/name p)))))
+
+  (define (pmodel/global-exports pmodel)
+    (define (global-exports package)
+      (append-map! (lambda (link)
+                    (if (eq? '() (package/name
+                                  (binding/package
+                                   (link/destination link))))
+                        (list (binding/name (link/destination link)))
+                        '()))
+                  (package/links package)))
+    (append-map! global-exports (pmodel/packages pmodel)))
+
+  (define (pmodel/package-bindings pmodel package-name)
+    (let ((package (pmodel/find-package pmodel package-name)))
+      (if package
+         (map binding/name (package/bindings package))
+         (error "No such package:" package-name))))
+
+  (define (duplicates listset)
+    (let loop ((items listset) (duplicates '()))
+      (cond ((null? items)
+            (reverse! duplicates))
+           ((memq (car items) (cdr items))
+            (if (memq (car items) duplicates)
+                (loop (cdr items) duplicates)
+                (loop (cdr items) (cons (car items) duplicates))))
+           (else
+            (loop (cdr items) duplicates)))))
+
+  (define (minus set1 set2)
+    (let loop ((items set1) (difference '()))
+      (cond ((null? items)
+            difference)
+           ((memq (car items) set2)
+            (loop (cdr items) difference))
+           (else
+            (loop (cdr items) (cons (car items) difference))))))
+
+  (define (check)
+    (let* ((texinfo (list->vector (call-with-input-file texi read-lines)))
+          (deffns (texinfo-deffns texinfo))
+          (dups (duplicates deffns))
+          (pmodel (read-package-model pkgset microcode-id/operating-system))
+          (bindings (append (pmodel/global-exports pmodel)
+                            (if (null? pkg)
+                                '()
+                                (pmodel/package-bindings pmodel pkg))))
+          (missing (minus bindings deffns))
+          (extras (minus deffns bindings)))
+      (if (not (null? dups))
+         (for-each (lambda (name) (warn "multiple-descriptions:" name)) dups))
+      (if (not (null? extras))
+         (for-each (lambda (name) (warn "not bound:" name)) extras))
+      (if (not (null? missing))
+         (for-each (lambda (name) (warn "not documented:" name)) missing))))
+
+  (check)
+  )
+EOF
index fc0a049ae02d1d21587f1f52325dc504c21b72b2..b4657911e6816a98c2489cb612cdd1c1aaf736be 100644 (file)
@@ -2,7 +2,7 @@ dnl Process this file with autoconf to produce a configure script.
 
 AC_PREREQ([2.69])
 AC_INIT([MIT/GNU Scheme Pucked blowfish plugin],
-        [0.2.2],
+        [0.2.3],
         [matt@birchwood-abbey.net],
         [mit-scheme-pucked-blowfish])
 AC_CONFIG_SRCDIR([blowfish.pkg])
index 5c99f30a76c1bdd578a333d163c89a9eae69b8c0..7c66d771841d712c072058f2864526c9f6c6bdc8 100644 (file)
@@ -1,3 +1,9 @@
+mit-scheme-pucked-blowfish (0.2.3) birchwood; urgency=low
+
+  * Upstream includes new blowfish tests.
+
+ -- Matt Birkholz <matt@birchwood-abbey.net>  Tue, 26 Dec 2017 17:00:00 -0700
+
 mit-scheme-pucked-blowfish (0.2.2) birchwood; urgency=low
 
   * Upstream now sports a texinfo manual, scraped from the OpenSSL
index 6b1db5911b66210993f2e19e232efd16ea543fa0..c8dce005532b78fc306fbfc2c6c505a96b2ed821 100644 (file)
@@ -6,4 +6,4 @@
   (lambda ()
     (load-package-set "blowfish")))
 
-(add-subsystem-identification! "Blowfish" '(0 2 2))
\ No newline at end of file
+(add-subsystem-identification! "Blowfish" '(0 2 3))
\ No newline at end of file
index 275ec11f29814265c6f383c474fb44083e2c719a..a8c0344e479069f2820c81079599b23cb3fea12e 100644 (file)
@@ -51,9 +51,10 @@ was removed from the makefiles and configure scripts.
 
 @item $cmd src/runtime/
 The Scheme code that wrapped the microcode modules was removed,
-including files @file{berkeley-db.scm}, @file{gdbm.scm},
+including files @file{blowfish.scm}, @file{berkeley-db.scm}, @file{gdbm.scm},
 @file{pgsql.scm} and @file{x11graph.scm}.  The packages @code{(runtime
-x-graphics)}, @code{(runtime gdbm)} and @code{(runtime postgresql)}
+blowfish)}, @code{(runtime x-graphics)},
+@code{(runtime gdbm)} and @code{(runtime postgresql)}
 were removed.  The @code{--edit} command line argument handler was
 stolen from Edwin as well as the @code{edit}, @code{edwin} and
 @code{spawn-edwin} procedures, which now autoload Edwin.  Pucked
diff --git a/src/gdbm/debian/doc-base b/src/gdbm/debian/doc-base
new file mode 100644 (file)
index 0000000..252a7db
--- /dev/null
@@ -0,0 +1,13 @@
+Document: mit-scheme-pucked-gdbm
+Title: MIT/GNU Scheme Pucked GDBM Manual
+Author: Matt Birkholz
+Abstract: The GDBM plugin for MIT/GNU Scheme Pucked wraps the
+GNU Database Manager (libgdbm) API.
+Section: Programming
+
+Format: HTML
+Index: /usr/share/doc/mit-scheme-pucked/html/gdbm.html
+Files: /usr/share/doc/mit-scheme-pucked/html/gdbm.html
+
+Format: PDF
+Files: /usr/share/doc/mit-scheme-pucked/pdf/gdbm.pdf.gz
index 5bd73ef47f8460b833ca7ecb05a3efa79c32d478..3f79b29a1edb8ea045cc071c543d991b1a2a9259 100755 (executable)
@@ -5,6 +5,9 @@ export MIT_SCHEME_EXE=mit-scheme-pucked
 %: debian/postinst debian/prerm
        dh $@
 
+override_dh_auto_install: debian/postinst debian/prerm
+       dh_auto_install -- install-html install-pdf
+
 debian/%: debian/%.in
        sed -e 's|@SCMDOCDIR@|/usr/share/doc/mit-scheme-pucked|g' \
            -e 's|@INFODIR@|/usr/share/info|g' \
index 704717d251d53faa726bda4bcb917d0788b2c3d9..becdb99834793f2d3c866803035dc776d47fa1b7 100644 (file)
@@ -58,9 +58,6 @@ typedef unsigned char cc_t;
 /* Define to 1 if you have the <assert.h> header file. */
 #define HAVE_ASSERT_H 1
 
-/* Define if you have the <blowfish.h> header file.  */
-#define HAVE_BLOWFISH_H 1
-
 /* Define if you have the <fcntl.h> header file.  */
 #define HAVE_FCNTL_H 1
 
diff --git a/src/runtime/blowfish.scm b/src/runtime/blowfish.scm
deleted file mode 100644 (file)
index e592ff6..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-#| -*-Scheme-*-
-
-Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
-    1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-    2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016,
-    2017 Massachusetts Institute of Technology
-
-This file is part of MIT/GNU Scheme.
-
-MIT/GNU Scheme is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at
-your option) any later version.
-
-MIT/GNU Scheme is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with MIT/GNU Scheme; if not, write to the Free Software
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301,
-USA.
-
-|#
-
-;;;; Interface to Blowfish
-;;; package: (runtime blowfish)
-
-(declare (usual-integrations))
-\f
-;;; This package now autoloads the blowfish plugin, which updates the
-;;; bindings during blowfish-available?.  During a restore the
-;;; bindings are un-assigned.  Restored threads in the midst of using
-;;; the blowfish library thus quickly signal unassigned and can
-;;; restart or abort as appropriate.  It is assumed a restart begins
-;;; again with a call to blowfish-available?, thus autoloading the
-;;; plugin in the restored world.
-
-(define loaded? #f)
-
-(define (blowfish-available?)
-  (or loaded?
-      (and (plugin-available? "blowfish")
-          (begin
-            (load-option 'blowfish)
-            (export-blowfish!)
-            (set! loaded? #t)
-            #t))))
-
-(define names
-  '(blowfish-cbc
-    blowfish-cfb64
-    blowfish-ecb
-    blowfish-encrypt-port
-    blowfish-file?
-    blowfish-ofb64
-    blowfish-set-key
-    compute-blowfish-init-vector
-    read-blowfish-file-header
-    write-blowfish-file-header))
-
-(define (export-blowfish!)
-  (let ((src (->environment '(blowfish)))
-       (dst (->environment '(runtime blowfish))))
-    (for-each (lambda (name)
-               (environment-assign! dst name (environment-lookup src name)))
-             names)))
-
-(define (reset-blowfish!)
-  (set! loaded? #f)
-  (let ((env (->environment '(runtime blowfish))))
-    (for-each (lambda (name) (environment-assign! env name #!default))
-             names)))
-
-(define blowfish-cbc)
-(define blowfish-cfb64)
-(define blowfish-ecb)
-(define blowfish-encrypt-port)
-(define blowfish-file?)
-(define blowfish-ofb64)
-(define blowfish-set-key)
-(define compute-blowfish-init-vector)
-(define read-blowfish-file-header)
-(define write-blowfish-file-header)
-
-(add-event-receiver! event:after-restart reset-blowfish!)
\ No newline at end of file
index 3dd670ce03f657e916080b107b0cad74042134a1..d0cc48175e512901a1fe5b6486ad7a6a3d061bdb 100644 (file)
@@ -34,7 +34,6 @@ USA.
     ("apropos" (runtime apropos))
     ("arith"   (runtime number))
     ("bitstr"  (runtime bit-string))
-    ("blowfish"        (runtime blowfish))
     ("boole"   (runtime boolean))
     ("boot"    (runtime boot-definitions))
     ("char"    (runtime character))
index 6e1db4170f07b54ccea36aae531ee166ed14804d..2a9fdcd704621713adafb51d49a02fc5fae02955 100644 (file)
@@ -102,22 +102,6 @@ USA.
          unsigned-integer->bit-string
          write-bits!))
 
-(define-package (runtime blowfish)
-  (files "blowfish")
-  (parent (runtime))
-  (export ()
-         blowfish-available?
-         blowfish-cbc
-         blowfish-cfb64
-         blowfish-ecb
-         blowfish-encrypt-port
-         blowfish-file?
-         blowfish-ofb64
-         blowfish-set-key
-         compute-blowfish-init-vector
-         read-blowfish-file-header
-         write-blowfish-file-header))
-
 (define-package (runtime boolean)
   (files "boole")
   (parent (runtime))
@@ -5056,7 +5040,7 @@ USA.
 (define-package (runtime crypto)
   (files "crypto")
   (parent (runtime))
-  (export ()
+  (export () deprecated:crypto
          mcrypt-algorithm-name
          mcrypt-algorithm-names
          mcrypt-available?
index a1495afdfcc4885821d64e671412e8a83108f9e9..e133c985d8fbe5db22b92aa326421b10ab40ecc7 100644 (file)
@@ -48,7 +48,6 @@ USA.
     "microcode/test-keccak"
     "microcode/test-lookup"
     "runtime/test-arith"
-    "runtime/test-blowfish"
     "runtime/test-bytevector"
     ("runtime/test-char" (runtime))
     ("runtime/test-char-set" (runtime character-set))