From: Matt Birkholz Date: Thu, 28 Dec 2017 08:09:23 +0000 (-0700) Subject: Fix merge. X-Git-Tag: mit-scheme-pucked-9.2.12~13 X-Git-Url: https://birchwood-abbey.net/git?a=commitdiff_plain;h=55274cdfe46f03d27f8b2ccb77ad1c0eec224f77;p=mit-scheme.git Fix merge. 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. --- diff --git a/debian/README.Debian b/debian/README.Debian index 8f4e43c57..ba4b4d152 100644 --- a/debian/README.Debian +++ b/debian/README.Debian @@ -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 diff --git a/debian/changelog b/debian/changelog index e0e5d152a..4d73b5a92 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +mit-scheme-pucked (9.2.11) birchwood; urgency=low + + * New upstream. Removes md5 and mhash plugins. + + -- Matt Birkholz 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. diff --git a/doc/user-manual/user.texinfo b/doc/user-manual/user.texinfo index d1d45306f..55fb3ea56 100644 --- a/doc/user-manual/user.texinfo +++ b/doc/user-manual/user.texinfo @@ -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 diff --git a/src/Tags.sh b/src/Tags.sh index 2ebdb9551..f6731b76c 100755 --- a/src/Tags.sh +++ b/src/Tags.sh @@ -29,12 +29,9 @@ set -e DEFAULT_SUBDIRS=( \ 6001 \ - blowfish \ compiler \ cref \ ffi \ - gdbm \ - mcrypt \ microcode \ runtime \ sf \ diff --git a/src/blowfish/Makefile.am b/src/blowfish/Makefile.am index 2040cb74a..d93090c2b 100644 --- a/src/blowfish/Makefile.am +++ b/src/blowfish/Makefile.am @@ -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 diff --git a/src/blowfish/NEWS b/src/blowfish/NEWS index b4ed06469..bf67a94dc 100644 --- a/src/blowfish/NEWS +++ b/src/blowfish/NEWS @@ -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 index ae2ca5f5b..000000000 --- a/src/blowfish/blowfish-check.scm +++ /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 diff --git a/src/blowfish/blowfish-check.sh b/src/blowfish/blowfish-check.sh index edf275a27..9d40981ce 100755 --- a/src/blowfish/blowfish-check.sh +++ b/src/blowfish/blowfish-check.sh @@ -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 diff --git a/tests/runtime/test-blowfish.scm b/src/blowfish/blowfish-test.scm similarity index 65% rename from tests/runtime/test-blowfish.scm rename to src/blowfish/blowfish-test.scm index 8160b5300..5f5f8c1b1 100644 --- a/tests/runtime/test-blowfish.scm +++ b/src/blowfish/blowfish-test.scm @@ -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 diff --git a/src/blowfish/blowfish.pkg b/src/blowfish/blowfish.pkg index 4929860df..ec4f4abce 100644 --- a/src/blowfish/blowfish.pkg +++ b/src/blowfish/blowfish.pkg @@ -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 diff --git a/src/blowfish/blowfish.scm b/src/blowfish/blowfish.scm index 7cab6e675..fd3ed80fa 100644 --- a/src/blowfish/blowfish.scm +++ b/src/blowfish/blowfish.scm @@ -29,23 +29,6 @@ USA. (declare (usual-integrations)) -(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 index 000000000..1802bf43c --- /dev/null +++ b/src/blowfish/check-doc.sh @@ -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 diff --git a/src/blowfish/configure.ac b/src/blowfish/configure.ac index fc0a049ae..b4657911e 100644 --- a/src/blowfish/configure.ac +++ b/src/blowfish/configure.ac @@ -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]) diff --git a/src/blowfish/debian/changelog b/src/blowfish/debian/changelog index 5c99f30a7..7c66d7718 100644 --- a/src/blowfish/debian/changelog +++ b/src/blowfish/debian/changelog @@ -1,3 +1,9 @@ +mit-scheme-pucked-blowfish (0.2.3) birchwood; urgency=low + + * Upstream includes new blowfish tests. + + -- Matt Birkholz 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 diff --git a/src/blowfish/make.scm b/src/blowfish/make.scm index 6b1db5911..c8dce0055 100644 --- a/src/blowfish/make.scm +++ b/src/blowfish/make.scm @@ -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 diff --git a/src/devops/pucked.texi b/src/devops/pucked.texi index 275ec11f2..a8c0344e4 100644 --- a/src/devops/pucked.texi +++ b/src/devops/pucked.texi @@ -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 index 000000000..252a7db97 --- /dev/null +++ b/src/gdbm/debian/doc-base @@ -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 diff --git a/src/gdbm/debian/rules b/src/gdbm/debian/rules index 5bd73ef47..3f79b29a1 100755 --- a/src/gdbm/debian/rules +++ b/src/gdbm/debian/rules @@ -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' \ diff --git a/src/microcode/ntutl/config.h b/src/microcode/ntutl/config.h index 704717d25..becdb9983 100644 --- a/src/microcode/ntutl/config.h +++ b/src/microcode/ntutl/config.h @@ -58,9 +58,6 @@ typedef unsigned char cc_t; /* Define to 1 if you have the header file. */ #define HAVE_ASSERT_H 1 -/* Define if you have the header file. */ -#define HAVE_BLOWFISH_H 1 - /* Define if you have the header file. */ #define HAVE_FCNTL_H 1 diff --git a/src/runtime/blowfish.scm b/src/runtime/blowfish.scm deleted file mode 100644 index e592ff675..000000000 --- a/src/runtime/blowfish.scm +++ /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)) - -;;; 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 diff --git a/src/runtime/ed-ffi.scm b/src/runtime/ed-ffi.scm index 3dd670ce0..d0cc48175 100644 --- a/src/runtime/ed-ffi.scm +++ b/src/runtime/ed-ffi.scm @@ -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)) diff --git a/src/runtime/runtime.pkg b/src/runtime/runtime.pkg index 6e1db4170..2a9fdcd70 100644 --- a/src/runtime/runtime.pkg +++ b/src/runtime/runtime.pkg @@ -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? diff --git a/tests/check.scm b/tests/check.scm index a1495afdf..e133c985d 100644 --- a/tests/check.scm +++ b/tests/check.scm @@ -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))