[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
world management and patches
Date: Thu, 28 Jul 88 20:00 EDT
From: cjl@WHEATIES.AI.MIT.EDU (Chris Lindblad)
Date: Thu, 23 Jun 88 10:36 EDT
From: SWM@SAPSUCKER.SCRC.Symbolics.COM (Scott McKay)
Date: Wed, 22 Jun 88 13:23 CDT
From: Gumby@MCC.COM (David Vinayak Wallace)
But they don't give you any tool for 1creating0 ECOs, so you can't use it
to distribute patches to your own systems.
m-X Start/Add/Finish Patch is how we create ECOs, except that we
include, by hand, a form at the top of the patch file, 2sct:define-eco0.
The sole purpose of that form is to make the herald and :Show ECOs print
something that indicates that there are ECO patches.
Unless I missed something, this still is not enough to make mail message ECOs
that can be decoded with the ZMAIL command "Decode ECO". How do you make a
mail message ECO from a distribution tape ECO?
It would also be nice if the file sys:zmail;eco-commands.lisp were on the next
We didn't include the encoding stuff because it was not adequately
tested. In fact, I know of several bugs. Including it in 7.2 would
have constituted a promise to support it, which promise we are not ready
The ECO tape included the entire source of SYS:IO1;ENCODE-BINARY-FILES,
even if the patches did not. The following is the entire source of
Please, do not expect to have bugs fixed in this. The 1only0 thing you
can count on working is encoding and decoding a distribution "tape"
which has been made using the :Use Disk keyword to :Distribute Systems.
;;; -*- Mode: LISP; Syntax: Common-Lisp; Base: 10; Package: ZWEI; Lowercase: Yes -*-
;;;> ** (c) Copyright 1988, 1987, 1986 Symbolics, Inc. All rights reserved.
;;;> ** Portions of font library Copyright (c) 1984 Bitstream, Inc. All Rights Reserved.
;;;> The software, data, and information contained herein are proprietary
;;;> to, and comprise valuable trade secrets of, Symbolics, Inc., which intends
;;;> to keep such software, data, and information confidential and to preserve
;;;> them as trade secrets. They are given in confidence by Symbolics pursuant
;;;> to a written license agreement, and may be used, copied, transmitted, and
;;;> stored only in accordance with the terms of such license.
;;;> Symbolics, Symbolics 3600, Symbolics 3670 (R), Symbolics 3675 (R), Symbolics 3630,
;;;> Symbolics 3640, Symbolics 3645 (R), Symbolics 3650 (R), Symbolics 3620 (R), Symbolics
;;;> 3610 (R), Symbolics Common Lisp (R), Symbolics-Lisp (R), Zetalisp (R), Genera (R),
;;;> Wheels, Dynamic Windows (R), Showcase, SmartStore, Semanticue, Frame-Up, Firewall (R),
;;;> MACSYMA (R), COMMON LISP MACSYMA, CL-MACSYMA (R), LISP MACHINE MACSYMA (R), MACSYMA
;;;> Newsletter (R), Document Examiner (R), S-DYNAMICS (R), S-GEOMETRY (R), S-PAINT (R),
;;;> S-RENDER (R), "Your Next Step in Computing" (R), Ivory, Symbolics C, Symbolics Pascal,
;;;> and Symbolics Fortran are trademarks of Symbolics, Inc.
;;;> RESTRICTED RIGHTS LEGEND
;;;> Use, duplication, and disclosure by the Government are subject to restrictions
;;;> as set forth in subdivision (c)(1)(ii) of the Rights in Trademark Data and Computer
;;;> Software Clause at FAR 52.227-7013.
;;;> Symbolics, Inc.
;;;> 11 Cambridge Center
;;;> Cambridge, Massachusetts 02142
;;;> United States of America
"Encode a file (presumably a quasi-distribution-tape) and put the result in another file."
(let* ((input (accept-defaulted-pathname "Encode file for ECO" (default-pathname)))
"Pathname of result" (send input :new-type :encode) :direction :write)))
(with-open-file (i input
(with-open-file (o output
(cli::encode-data-as-ascii i o))))
(defvar *mail-ECO-encoded-file* nil)
"Encode a file, if necessary, and put encoded ASCII into a message draft."
(let ((eco-file (accept-defaulted-pathname "Get ECO material from file" (default-pathname))))
(with-open-file (i eco-file
(format t "The file ~A has not been encoded~@
~2T for mail ECO transmission. Please name a file for the encoded result."
(let ((output (accept-defaulted-pathname
"Pathname for encoded output" (send eco-file :new-type :encode)
(with-open-file (i eco-file
(with-open-file (o output
(cli::encode-data-as-ascii i o)))
(setq eco-file output)))))
(let ((*mail-eco-encoded-file* eco-file))
(defvar *ECO-greeting* " *** Software ECO Distribution ***
by electronic mail, from Symbolics, Inc.
>> To restore this distribution, please use the Zmail command
m-X Decode ECO
It will save the decoded distribution in the file named in the
encoded body. It will also offer to do Restore Distribution from
" -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
;; Mostly copied from Compatible Mail Template
(:name "ECO mail")
(:documentation "Mail an ECO with compatible special variable user options.")
(:header-field :to (prompt-for-addresses "To:"))
(:header-field :subject "Software ECO Distribution")
(:text (string-append *eco-greeting* *eco-delimiter*
(with-open-file (i *mail-eco-encoded-file*
:direction :input :characters :default)
(si:stream-copy-until-eof i s)))
"Decode a message as a Software ECO Distribution, into the file named in the encoded body.
Offer to do Restore Distribution on this file."
(flet ((bad-eco-barf (&optional error)
(barf "This message does not appear to be a valid Software ECO Distribution~@[:~@
(let ((encoded-start-bp (search (msg-start-bp *msg*) *eco-delimiter*))
(let ((encoded-end-bp (search encoded-start-bp *eco-delimiter*)))
(bad-eco-barf "Could not find a pair of encoded-ECO delimiters"))
(setq encoded-end-bp (search encoded-end-bp *eco-delimiter* t)) ;back over it
(setq pathname (with-interval-stream (s encoded-start-bp encoded-end-bp t)
(format query-io "~&The decoded ECO will be stored in ~A." pathname)
(yes-or-no-p "Should I do a :Restore Distribution from that file, too? "))
(with-interval-stream (s encoded-start-bp encoded-end-bp t)
(cli::ascii-decoding-data-error (bad-eco-barf error)))
(format t "~&Decoded ECO stored in ~A." pathname)
(progn (format t "~&Restoring distribution from ~A." pathname)
;;--- This awful kludge [let - flet - letf] is made necessary by
;;--- insufficient smarts in the released version of
;;--- dis:open-input-distribution-tape-access-path. Be sure to change
;;--- it to do this dwimification in the next release. -- Dodds 5/02/88
(flet ((new-open-input-distribution-tape-access-path (&optional
(when (and (null path) (typep use-disk 'fs:pathname))
(setq path use-disk
(dis:restore-distribution-from-tape :use-disk pathname))))
(format t "~&Distribution restored. Do :Load Patches to ~
install the ECO in the running world."))
(format t "~&Don't forget to :Restore Distribution :Use Disk Yes,~@
~2Tusing the file ~A,~@
~2Tthen :Load Patches to install the ECO in the running world."