* gnu/packages/scheme.scm (racket): Update to 7.0. [inputs]: Add libedit. [arguments]: Update the list of FFI library references to patch. [source]: Remove 'racket-fix-xform-issue.patch'. * gnu/packages/patches/racket-store-checksum-override.patch: Adjust. * gnu/packages/patches/racket-fix-xform-issue.patch: Delete file. * gnu/local.mk: Adjust accordingly. Signed-off-by: Leo Famulari <leo@famulari.name>
		
			
				
	
	
		
			49 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
	
		
			2 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.
 | |
| ---
 | |
|  collects/compiler/private/cm-minimal.rkt | 8 +++++++-
 | |
|  1 file changed, 7 insertions(+), 1 deletion(-)
 | |
| 
 | |
| diff --git a/collects/compiler/private/cm-minimal.rkt b/collects/compiler/private/cm-minimal.rkt
 | |
| index a5a5407..15af6b8 100644
 | |
| --- a/collects/compiler/private/cm-minimal.rkt
 | |
| +++ b/collects/compiler/private/cm-minimal.rkt
 | |
| @@ -7,6 +7,7 @@
 | |
|           racket/list
 | |
|           racket/path
 | |
|           racket/promise
 | |
| +         racket/string
 | |
|           openssl/sha1
 | |
|           setup/collects
 | |
|           compiler/compilation-path
 | |
| @@ -543,6 +544,10 @@
 | |
|        #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)))
 | |
| +
 | |
|  (define (rkt->ss p)
 | |
|    (if (path-has-extension? p #".rkt")
 | |
|        (path-replace-extension p #".ss")
 | |
| @@ -595,7 +600,8 @@
 | |
|                (trace-printf "newer src... ~a > ~a" path-time path-zo-time)
 | |
|                ;; If `sha1-only?', then `maybe-compile-zo' returns a #f or thunk:
 | |
|                (maybe-compile-zo sha1-only? deps path->mode roots path orig-path read-src-syntax up-to-date collection-cache new-seen)]
 | |
| -             [(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" difference)
 | |
|                     ;; If `sha1-only?', then `maybe-compile-zo' returns a #f or thunk:
 | |
| -- 
 | |
| 2.18.0
 | |
| 
 |