;;; -*- Mode:Lisp; Readtable:ZL; Package:USER; Base:8; Patch-File:T -*-
;;; Patch file for System version 124.116
;;; Reason:
;;;  (si:system-source-files) returns the list of source files in a system and
;;;  its component subsystems.  Currently, it goes through the subsystems in
;;;  REVERSE order.  Looking at current callers of this function, there is no
;;;  reason why it should do this.  A human, calling ZWEI's "Find System Files",
;;;  for example, would prefer the subsystems in normal order.  Fix it.
;;; Written 28-Jun-88 15:47:49 by pld (Peter L. DeWolf) at site Gigamos Cambridge
;;; while running on Cthulhu from band 1
;;; with Experimental System 124.112, Experimental Local-File 74.3, Experimental File-Server 23.1, Experimental Unix-Interface 12.0, Experimental ZMail 72.1, Experimental Tape 23.6, Experimental Lambda-Diag 16.2, microcode 1761, SDU Boot Tape 3.14, SDU ROM 8, the old ones.



; From modified file DJ: L.SYS2; MAKSYS.LISP#208 at 28-Jun-88 15:48:11
#8R SYSTEM-INTERNALS#: 
(COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "SYSTEM-INTERNALS")))
  (COMPILER::PATCH-SOURCE-FILE "SYS: SYS2; MAKSYS  "


(DEFUN SYSTEM-SOURCE-FILES-1 (SYSTEM TYPES INTERMEDIATE-TOO INCLUDE-SUBSYSTEMS
			      &AUX *SYSTEM-DEFAULT-BINARY-FILE-TYPE*)
  (SETQ SYSTEM (FIND-SYSTEM-NAMED SYSTEM))
  (SETQ *SYSTEM-DEFAULT-BINARY-FILE-TYPE* (system-default-binary-file-type system))
  (NCONC (LET ((SYMBOL (SYSTEM-SYMBOLIC-NAME SYSTEM)))
	   (AND SYMBOL
		(LET ((FILE (GET-SOURCE-FILE-NAME SYMBOL 'DEFSYSTEM)))
		  (AND FILE
		       (LET ((DEFINING-SYSTEM (SEND FILE :GET 'MAYBE-RELOAD-SYSTEM)))
			 (AND DEFINING-SYSTEM
			      (SYSTEM-SOURCE-FILES-1 DEFINING-SYSTEM TYPES INTERMEDIATE-TOO
						     INCLUDE-SUBSYSTEMS)))
		       ))))
	 ;; First get inputs that come from files in modules
	 ;; We get them from transformations, but the order we consider
	 ;; the transformations is the order the modules were specified.
	 (LET ((*FORCE-PACKAGE* (SYSTEM-PACKAGE-DEFAULT SYSTEM)))
	   (LOOP FOR MODULE IN (REVERSE (SYSTEM-MODULES SYSTEM))
		 NCONC (LOOP FOR TRANSFORMATION IN (SYSTEM-TRANSFORMATIONS SYSTEM)
			     WHEN (EQ (TRANSFORMATION-INPUT TRANSFORMATION) MODULE)
			     NCONC (TRANSFORMATION-SOURCE-FILES TRANSFORMATION TYPES NIL))))
	 ;; Now get intermediate source files if wanted.
	 ;; Those are files that are "sources" for some transformations
	 ;; but are produced by others rather than specified in modules.
	 (AND INTERMEDIATE-TOO
	      (LET ((*FORCE-PACKAGE* (SYSTEM-PACKAGE-DEFAULT SYSTEM)))
		(LOOP FOR TRANSFORMATION IN (SYSTEM-TRANSFORMATIONS SYSTEM)
		      WHEN (NOT (TYPEP (TRANSFORMATION-INPUT TRANSFORMATION) 'MODULE))
		      NCONC (TRANSFORMATION-SOURCE-FILES TRANSFORMATION TYPES T))))
	 (AND INCLUDE-SUBSYSTEMS
	      (LOOP FOR SUBSYS IN (SYSTEM-COMPONENT-SYSTEMS SYSTEM)
		    NCONC (SYSTEM-SOURCE-FILES-1 SUBSYS TYPES INTERMEDIATE-TOO
						 INCLUDE-SUBSYSTEMS)))))

))
