* gnu/packages/scheme.scm (racket): Update to 7.6. [home-page]: Use HTTPS. * gnu/packages/patches/racket-store-checksum-override.patch: Adjust for 7.6.
		
			
				
	
	
		
			42 lines
		
	
	
		
			No EOL
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			No EOL
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
Racket uses checksums to test if it needs to recompile its source
 | 
						|
files to bytecode.  If Racket is updated by grafting, the source and
 | 
						|
bytecode files get updated, but the checksum stays the same.  Since
 | 
						|
the checksum no longer matches the source file, Racket tries to
 | 
						|
regenerate the bytecode and write it to the store, causing errors
 | 
						|
because the store is immutable.  This patch makes Racket ignore
 | 
						|
checksums for files in the store.
 | 
						|
 | 
						|
See <https://debbugs.gnu.org/30680> for details.
 | 
						|
 | 
						|
---
 | 
						|
--- a/collects/compiler/private/cm-minimal.rkt
 | 
						|
+++ b/collects/compiler/private/cm-minimal.rkt
 | 
						|
@@ -6,6 +6,7 @@
 | 
						|
          racket/list
 | 
						|
          racket/path
 | 
						|
          racket/promise
 | 
						|
+         racket/string
 | 
						|
          file/sha1
 | 
						|
          setup/cross-system
 | 
						|
          compiler/compilation-path
 | 
						|
@@ -268,7 +269,8 @@
 | 
						|
                (trace-printf "newer src... ~a > ~a" path-time path-zo-time)
 | 
						|
                (maybe-compile-zo deps path->mode roots path orig-path read-src-syntax up-to-date collection-cache new-seen
 | 
						|
                                  #:trying-sha1? sha1-only?)]
 | 
						|
-              [(different-source-sha1-and-dep-recorded path deps)
 | 
						|
+              [(and (not (store-reference? path))
 | 
						|
+                    (different-source-sha1-and-dep-recorded path deps))
 | 
						|
                => (lambda (difference)
 | 
						|
                     (trace-printf "different src hash ~a for ~a..." difference path)
 | 
						|
                     (maybe-compile-zo deps path->mode roots path orig-path read-src-syntax up-to-date collection-cache new-seen
 | 
						|
@@ -1012,5 +1014,9 @@
 | 
						|
       #f
 | 
						|
       (list src-hash recorded-hash)))
 | 
						|
 | 
						|
+(define (store-reference? path)
 | 
						|
+  (let ([store-prefix (or (getenv "NIX_STORE") "/gnu/store")])
 | 
						|
+    (string-prefix? (path->string path) store-prefix)))
 | 
						|
+
 | 
						|
 ;; Make sure `recompile-from` is machine-independent so that
 | 
						|
 ;; recompilation makes sense.
 | 
						|
 ;; The compilation lock must is held for the source of `recompile-from`.
 |