[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

world management and patches

    Date: Wed, 22 Jun 88 13:23 CDT
    From: Gumby@MCC.COM (David Vinayak Wallace)

	Date: Tue, 21 Jun 88 11:40 EDT
	From: barmar@Think.COM (Barry Margolin)

	    Date: Mon, 20 Jun 88 15:42 PDT
	    From: Jerry@marlowe.inference.dialnet.symbolics.com (Jerry Bakin)

	    A useful addition to the patch commands in Zmacs would be a command to
	    package patch sources and the new patch-dir into a mail message and
	    another command to unpack this message and create the appropriate files
	    in the patch directory.

	Symbolics is way ahead of you on this one:  Genera 7.2 ECO Tape
	#1includes support for receiving future ECOs (which are just patches) by
	electronic mail.  The new M-X Decode ECO Zmail command will read a
	message and write a file, and this file can then be read using "Restore
	Distribution :Use Disk <pathname>" (the Decode ECO command will offer to
	run this automatically).

    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.

Here is a pared-down script we used to generate the first ECO tape, but
note that this requires that those ECOs be loaded in order to work.
After loading the script, the Write 7.2 ECO Distribution Tape command
will make the tape.  You can probably massage this as you need to suit
your own purposes.

;;; -*- Syntax: Zetalisp; Package: SCT; Base: 10; Mode: LISP; Lowercase: Yes -*-

(defun load-if-necessary (pathname)
  (let* ((pathname (send (fs:parse-pathname pathname)
			 :new-pathname :type :lisp :version :newest))
	 (generic (send pathname :generic-pathname))
	 (loaded-id (sys:get-file-loaded-id generic nil))
	 (creation-date (with-open-file (s pathname :direction :probe
						    :if-does-not-exist :error)
			  (send s :creation-date))))
    (when ( (cdr loaded-id) creation-date)
      (load pathname))))

;; Standard layered products
(load-if-necessary "sys:print;sysdcl")
(load-if-necessary "sys:mailer;system")
(load-if-necessary "sys:metering;metering-sysdcl")
(load-if-necessary "sys:metering;interface;sysdcl")

(defmacro collect-systems-list (system-list)
  `(loop for (system version args) in ,system-list
	 collecting (list (find-system-named system) version args)))

(defvar 7-2-eco-distribution
	'((system 376)				;starting from "7.2"
	  (utilities 27)			;..
	  (server-utilities 28)
	  (hardcopy 118)
	  (zmail 165)
	  (lmfs 102)
	  (tape 82)
	  (nsage (27 120 120) (:distribute-binaries nil))
	  (extended-help 18)
	  (doc 62 (:compress t :distribute-patch-sources t))
	  ;; From here on we need to explicitly specify the starting patch number,
	  ;; since the checkpoint "7.2" doesn't apply to any systems except those
	  ;; which are loaded in the standard distribution world.
	  ;; Standard layered products
	  (print (16 1) (:distribute-binaries nil))
	  (mailer (17 1) (:distribute-binaries nil))
	  (metering-substrate (26 8) (:distribute-binaries nil))
	  (metering (11 2) (:distribute-binaries nil))

;; CP command for distribute of basic distribution tape
(cp:define-command (com-write-7-2-eco-distribution-tape
		     :command-table "global"
		     :name "Write 7.2 ECO Distribution Tape")
    (&key (distribute-sources 'scl:(token-or-type (:use-system-value) boolean)
			      :default :use-system-value
			      :documentation "Distribute source files"))
    (collect-systems-list 7-2-eco-distribution) nil
    :query :confirm
    :included-files-checkpoint "7.2"
    :source-category :basic
    :include-journals nil
    :include-components nil
    :distribute-sources distribute-sources
    :distribute-binaries :use-system-value
    :include-patches t
    :distribute-patch-sources nil))