unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
blob 6c4ebcf022b5137393e31d20c36c4009737ab6a2 1897 bytes (raw)

 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
 
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`.

debug log:

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

Code repositories for project(s) associated with this public inbox

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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).