racket / racket/racket

rktboot error on aarch64-linux

Open
#3,948 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

build
Dominant language
Racket
Stars
5.2k
Forks
698
Avg merge
18h 34m
Merged PRs (30d)
5

Description

According to Guix CI, bootstrapping Raket's Chez Scheme fork fails with an error from string-append. Here's the tail of the build log:

starting phase `build'
Assuming current directory has Chez Scheme sources
string-append: contract violation
  expected: string?
  given: #f
  argument position: 1st
  other arguments...:
   ".def"
  context...:
   /tmp/guix-build-racket-bootstrap-chez-bootfiles-8.2.drv-0/racket-minimal-8.2-checkout/racket/src/ChezScheme/rktboot/machine-def.rkt:6:0: open-file-with-machine.def-redirect
command "/gnu/store/1m10cjmip18isdxf0bljq733brq2gg9p-racket-minimal-bc-3m-8.2/bin/racket" "rktboot/main.rkt" "--dest" "/gnu/store/xlsnnphcqn1xxp2yqr519jh9sv0ai9xw-racket-bootstrap-chez-bootfiles-8.2" failed with status 1
builder for `/gnu/store/xg8sa6qssr46n5n887bzb5l3cl78fy52-racket-bootstrap-chez-bootfiles-8.2.drv' failed with exit code 1
@ build-failed /gnu/store/xg8sa6qssr46n5n887bzb5l3cl78fy52-racket-bootstrap-chez-bootfiles-8.2.drv - 1 builder for `/gnu/store/xg8sa6qssr46n5n887bzb5l3cl78fy52-racket-bootstrap-chez-bootfiles-8.2.drv' failed with exit code 1

The offending string-append seems to be here: https://github.com/racket/racket/blob/4f0e1703979d704c4f91b009945c324450acec7a/racket/src/ChezScheme/rktboot/machine-def.rkt#L10

I don't know if target-machine being #f is indicative of a broader problem inferring the target machine or not. A further complication is that I don't have an aarch64-linux setup myself, though I could try to get something working via QEMU.

I hope this problem isn't specific to Guix, but the build is driven by this Guile code, which I can (hopefully) explain if necessary: https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/racket.scm

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with racket/src/ChezScheme/rktboot/machine-def.rkt, especially open-file-with-machine.def-redirect, and review the linked Guix build log. Compare how target-machine is inferred on aarch64-linux with the package definition in Guix's gnu/packages/racket.scm. Done means the Racket bootstrap build completes on aarch64-linux without the string-append contract violation.

Written by the indexing model from the issue text.

Assessment

Domain
build-system, operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.