all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
blob 6c9cd5198a4bd76fea8cab9c9967a5d3cc385f96 2045 bytes (raw)
name: gnu/packages/patches/racket-store-checksum-override.patch 	 # note: path name is non-authoritative(*)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
 
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


debug log:

solving 6c9cd5198 ...
found 6c9cd5198 in https://git.savannah.gnu.org/cgit/guix.git

(*) Git path names are given by the tree(s) the blob belongs to.
    Blobs themselves have no identifier aside from the hash of its contents.^

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.