gnu-build: Issue a warning unless every phase returns #t.
* guix/build/gnu-build-system.scm (gnu-build): Issue a warning if a phase returns a value other than #t.
This commit is contained in:
		
							parent
							
								
									daac9c77b9
								
							
						
					
					
						commit
						d8a3b1b9e8
					
				
					 1 changed files with 22 additions and 13 deletions
				
			
		|  | @ -746,17 +746,26 @@ in order.  Return #t if all the PHASES succeeded, #f otherwise." | |||
| 
 | ||||
|   ;; The trick is to #:allow-other-keys everywhere, so that each procedure in | ||||
|   ;; PHASES can pick the keyword arguments it's interested in. | ||||
|   (every (match-lambda | ||||
|           ((name . proc) | ||||
|            (let ((start (current-time time-monotonic))) | ||||
|              (format #t "starting phase `~a'~%" name) | ||||
|              (let ((result (apply proc args)) | ||||
|                    (end    (current-time time-monotonic))) | ||||
|                (format #t "phase `~a' ~:[failed~;succeeded~] after ~,1f seconds~%" | ||||
|                        name result | ||||
|                        (elapsed-time end start)) | ||||
|   (for-each (match-lambda | ||||
|               ((name . proc) | ||||
|                (let ((start (current-time time-monotonic))) | ||||
|                  (format #t "starting phase `~a'~%" name) | ||||
|                  (let ((result (apply proc args)) | ||||
|                        (end    (current-time time-monotonic))) | ||||
|                    (format #t "phase `~a' ~:[failed~;succeeded~] after ~,1f seconds~%" | ||||
|                            name result | ||||
|                            (elapsed-time end start)) | ||||
| 
 | ||||
|                ;; Dump the environment variables as a shell script, for handy debugging. | ||||
|                (system "export > $NIX_BUILD_TOP/environment-variables") | ||||
|                result)))) | ||||
|          phases)) | ||||
|                    ;; Issue a warning unless the result is #t. | ||||
|                    (unless (eqv? result #t) | ||||
|                      (format (current-error-port) "\ | ||||
| ## WARNING: phase `~a' returned `~s'.  Return values other than #t | ||||
| ## are deprecated.  Please migrate this package so that its phase | ||||
| ## procedures report errors by raising an exception, and otherwise | ||||
| ## always return #t.~%" | ||||
|                              name result)) | ||||
| 
 | ||||
|                    ;; Dump the environment variables as a shell script, for handy debugging. | ||||
|                    (system "export > $NIX_BUILD_TOP/environment-variables") | ||||
|                    result)))) | ||||
|             phases)) | ||||
|  |  | |||
		Reference in a new issue