make-is-out-of-date? is more readable now; small improvement
target-mtime doesn't need to be checked for each prereq.
This commit is contained in:
		
							parent
							
								
									9e1b812cfd
								
							
						
					
					
						commit
						c411f67a2c
					
				| 
						 | 
					@ -6,7 +6,7 @@
 | 
				
			||||||
    (let ((cooked-state (last args))
 | 
					    (let ((cooked-state (last args))
 | 
				
			||||||
	  (prereqs-results (cdr (reverse (cdr args)))))
 | 
						  (prereqs-results (cdr (reverse (cdr args)))))
 | 
				
			||||||
      (cons (begin 
 | 
					      (cons (begin 
 | 
				
			||||||
	      (display ";;; rule      : ")
 | 
						      (display ";;; file      : ")
 | 
				
			||||||
	      (display target)
 | 
						      (display target)
 | 
				
			||||||
	      (newline)
 | 
						      (newline)
 | 
				
			||||||
	      (bind-fluids-gnu target prereqs prereqs-results thunk))
 | 
						      (bind-fluids-gnu target prereqs prereqs-results thunk))
 | 
				
			||||||
| 
						 | 
					@ -61,18 +61,22 @@
 | 
				
			||||||
      (cons (file-not-exists? target) init-state))))
 | 
					      (cons (file-not-exists? target) init-state))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define (make-is-out-of-date? target . prereqs)
 | 
					(define (make-is-out-of-date? target . prereqs)
 | 
				
			||||||
  (lambda args 
 | 
					 (lambda args 
 | 
				
			||||||
;    (breakpoint "make-is-out-of-date?")
 | 
					;    (breakpoint "make-is-out-of-date?")
 | 
				
			||||||
    (let ((init-state (last args)))
 | 
					    (let ((init-state (last args)))
 | 
				
			||||||
      (cons (or (file-not-exists? target)
 | 
					      (cons (if (file-not-exists? target)
 | 
				
			||||||
		(and (not (null? prereqs))
 | 
							#t
 | 
				
			||||||
		     (let for-each-prereq ((prereq (car prereqs))
 | 
							(if (null? prereqs)
 | 
				
			||||||
					   (todo (cdr prereqs)))
 | 
							    #f
 | 
				
			||||||
		       (cond
 | 
							    (let ((target-mtime (file-last-mod target)))
 | 
				
			||||||
			((file-not-exists? prereq) #t)
 | 
							      (let for-each-prereq ((prereq (car prereqs))
 | 
				
			||||||
			((> (file-last-mod prereq) (file-last-mod target)) #t)
 | 
										    (todo (cdr prereqs)))
 | 
				
			||||||
			((null? todo) #f)
 | 
								(cond
 | 
				
			||||||
			(else (for-each-prereq (car todo) (cdr todo)))))))
 | 
								 ((file-not-exists? prereq) 
 | 
				
			||||||
 | 
								  (error "nonexistent prerequisite" prereq))
 | 
				
			||||||
 | 
								 ((> (file-last-mod prereq) target-mtime) #t)
 | 
				
			||||||
 | 
								 ((null? todo) #f)
 | 
				
			||||||
 | 
								 (else (for-each-prereq (car todo) (cdr todo))))))))
 | 
				
			||||||
	    init-state))))
 | 
						    init-state))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define (make-md5-sum-changed? target . prereqs)
 | 
					(define (make-md5-sum-changed? target . prereqs)
 | 
				
			||||||
| 
						 | 
					@ -86,13 +90,13 @@
 | 
				
			||||||
  (let* ((bname (string-append basename extension))
 | 
					  (let* ((bname (string-append basename extension))
 | 
				
			||||||
	 (file (expand-file-name bname (cwd))))
 | 
						 (file (expand-file-name bname (cwd))))
 | 
				
			||||||
    (if (file-exists? file)
 | 
					    (if (file-exists? file)
 | 
				
			||||||
	 (let* ((outport (open-input-file file))
 | 
						(let* ((outport (open-input-file file))
 | 
				
			||||||
		(strls (port->string-list outport)))
 | 
						       (strls (port->string-list outport)))
 | 
				
			||||||
	   ;; (display ";;; using     : ") (display bname) (newline)
 | 
						  ;; (display ";;; using     : ") (display bname) (newline)
 | 
				
			||||||
	   (if (null? strls) 
 | 
						  (if (null? strls) 
 | 
				
			||||||
	       #f 
 | 
						      #f 
 | 
				
			||||||
	       (string->number (car strls))))
 | 
						      (string->number (car strls))))
 | 
				
			||||||
	 #f)))
 | 
						#f)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(define (checksum-into-file basename extension checksum)
 | 
					(define (checksum-into-file basename extension checksum)
 | 
				
			||||||
  (let* ((bname (string-append basename extension))
 | 
					  (let* ((bname (string-append basename extension))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue