store: 'run-with-store' initializes %CURRENT-TARGET-SYSTEM to #f.
* guix/store.scm (run-with-store): Set %CURRENT-TARGET-SYSTEM to #f.
* tests/gexp.scm ("gexp->derivation vs. %current-target-system"): New test.
			
			
This commit is contained in:
		
							parent
							
								
									d7facc6603
								
							
						
					
					
						commit
						a8afb9aed3
					
				
					 2 changed files with 16 additions and 1 deletions
				
			
		| 
						 | 
					@ -996,8 +996,12 @@ permission bits are kept."
 | 
				
			||||||
                         (system (%current-system)))
 | 
					                         (system (%current-system)))
 | 
				
			||||||
  "Run MVAL, a monadic value in the store monad, in STORE, an open store
 | 
					  "Run MVAL, a monadic value in the store monad, in STORE, an open store
 | 
				
			||||||
connection, and return the result."
 | 
					connection, and return the result."
 | 
				
			||||||
 | 
					  ;; Initialize the dynamic bindings here to avoid bad surprises.  The
 | 
				
			||||||
 | 
					  ;; difficulty lies in the fact that dynamic bindings are resolved at
 | 
				
			||||||
 | 
					  ;; bind-time and not at call time, which can be disconcerting.
 | 
				
			||||||
  (parameterize ((%guile-for-build guile-for-build)
 | 
					  (parameterize ((%guile-for-build guile-for-build)
 | 
				
			||||||
                 (%current-system system))
 | 
					                 (%current-system system)
 | 
				
			||||||
 | 
					                 (%current-target-system #f))
 | 
				
			||||||
    (call-with-values (lambda ()
 | 
					    (call-with-values (lambda ()
 | 
				
			||||||
                        (run-with-state mval store))
 | 
					                        (run-with-state mval store))
 | 
				
			||||||
      (lambda (result store)
 | 
					      (lambda (result store)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -636,6 +636,17 @@
 | 
				
			||||||
                                            file)))))
 | 
					                                            file)))))
 | 
				
			||||||
      #:guile-for-build (package-derivation %store %bootstrap-guile))))
 | 
					      #:guile-for-build (package-derivation %store %bootstrap-guile))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(test-assert "gexp->derivation vs. %current-target-system"
 | 
				
			||||||
 | 
					  (let ((mval (gexp->derivation "foo"
 | 
				
			||||||
 | 
					                                #~(begin
 | 
				
			||||||
 | 
					                                    (mkdir #$output)
 | 
				
			||||||
 | 
					                                    (foo #+gnu-make))
 | 
				
			||||||
 | 
					                                #:target #f)))
 | 
				
			||||||
 | 
					    ;; The value of %CURRENT-TARGET-SYSTEM at bind-time should have no
 | 
				
			||||||
 | 
					    ;; influence.
 | 
				
			||||||
 | 
					    (parameterize ((%current-target-system "fooooo"))
 | 
				
			||||||
 | 
					      (derivation? (run-with-store %store mval)))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(test-assert "printer"
 | 
					(test-assert "printer"
 | 
				
			||||||
  (string-match "^#<gexp \\(string-append .*#<package coreutils.*\
 | 
					  (string-match "^#<gexp \\(string-append .*#<package coreutils.*\
 | 
				
			||||||
 \"/bin/uname\"\\) [[:xdigit:]]+>$"
 | 
					 \"/bin/uname\"\\) [[:xdigit:]]+>$"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Reference in a new issue