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 for details. --- --- 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 file/sha1 setup/collects setup/cross-system @@ -940,6 +941,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") @@ -1015,6 +1020,7 @@ (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-seens='txt' type='search' size='10' name='q' value=''/>
path: root/tests/pack.scm
AgeCommit message (Expand)Author
2021-07-18pack: Allow embedding custom control files in deb packs....* guix/scripts/pack.scm (self-contained-tarball/builder) [extra-options]: New argument. (self-contained-tarball, squashfs-image, docker-image) (debian-archive): Likewise. Remove two TODO comments. Document EXTRA-OPTIONS. Use the custom control files when provided. (%deb-format-options): New variable. (show-deb-format-options, show-deb-format-options/detailed): New procedures. (%options): Register new options. (show-help): Augment with new usage. (guix-pack): Validate and propagate new argument values. * doc/guix.texi (Invoking guix pack)[deb]: Document how to list advanced options. Add an example. * tests/pack.scm (deb archive...): Provide extra-options to the debian-archive procedure, and validate that the provided files are embedded in the pack. Maxim Cournoyer
2021-06-29pack: Add support for the deb format....* .dir-locals.el (scheme-mode)[gexp->derivation]: Define indentation rule. * guix/scripts/pack.scm (debian-archive): New procedure. (%formats): Register the new deb format. (show-formats): Add it to the usage string. * tests/pack.scm (%ar-bootstrap): New variable. (deb archive with symlinks): New test. * doc/guix.texi (Invoking guix pack): Document it. * NEWS: Add news entry. Maxim Cournoyer
2021-06-29tests: pack: Fix compressor extension....* tests/pack.scm (%gzip-compressor): Add the missing leading period to the gzip compressor file extension. Maxim Cournoyer
2020-07-20pack: Build the store database under a UTF-8 locale....Fixes <https://bugs.gnu.org/42389>. Reported by branjam4@gmail.com. * guix/scripts/pack.scm (store-database)[build]: Add calls to 'setenv' and 'setlocale'. * tests/pack.scm ("self-contained-tarball + localstatedir, UTF-8 file names"): New test. Ludovic Courtès
2020-07-20pack: 'self-contained-tarball' runs derivation in a UTF-8local....* guix/scripts/pack.scm (self-contained-tarball) [set-utf8-locale]: New variable. [build]: Use it. * tests/pack.scm ("self-contained-tarball"): Use a <profile> record instead of 'profile-derivation'. Ludovic Courtès
2019-12-26gnu: Remove squashfs-tools-next....* gnu/packages/compression.scm (squashfs-tools-next): Remove variable. * guix/scripts/pack.scm (squashfs-image, guix-pack): Use squashfs-tools. * tests/pack.scm: Use squashfs-tools. Ricardo Wurmus
2019-08-27pack: Create /tmp in Docker images....Fixes <https://bugs.gnu.org/37161>. * guix/scripts/pack.scm (docker-image)[build]: Add a 'directory' entry for "/tmp" to DIRECTIVES. * tests/pack.scm ("docker-image + localstatedir"): Test the presence of /tmp. * gnu/tests/docker.scm (run-docker-test)["Load docker image and run it"]: Test the presence and permission bits of "/tmp". Ludovic Courtès