racket / racket/racket

Regression since Racket 8.5: fonts are required to build successfully.

Open
#4,290 6 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

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

Description

We are compiling Racket in a minimalist container (Void Linux x86_64 glibc), and Racket 8.4 builds fine without any true-type fonts installed.
However, since 8.5 (and also in snapshot 8.5.0.8), raco setup fails when no fonts are found:

raco setup: error: during building docs for <pkgs>/racket-doc/scribblings/guide/guide.scrbl                                                                     
raco setup:   draw-polygon in dc<%>: drawing context is not ok: (wrapper-object:bitmap-dc% ...)                                                                 
raco setup:     context...:                                                     
raco setup:      .../private/arrow-higher-order.rkt:375:33: ...row-higher-order.rkt:375:33                                                                      
raco setup:      /destdir/racket-8.6/usr/share/racket/pkgs/pict-lib/pict/private/utils.rkt:653:9                                                                
raco setup:      /destdir/racket-8.6/usr/share/racket/pkgs/pict-lib/pict/private/pict.rkt:1805:6: loop                                                          
raco setup:      [repeats 1 more time]                                          
raco setup:      /destdir/racket-8.6/usr/share/racket/pkgs/pict-lib/pict/private/pict.rkt:1969:0: convert-pict/bytes                                            
raco setup:      /destdir/racket-8.6/usr/share/racket/pkgs/pict-lib/pict/private/pict.rkt:1919:0: convert-pict                                                  
raco setup:      /destdir/racket-8.6/usr/share/racket/pkgs/scribble-lib/scribble/html-render.rkt:1261:4: render-content method in render-mixin                  
raco setup:      /destdir/racket-8.6/usr/share/racket/pkgs/scribble-lib/scribble/base-render.rkt:974:4: render-content method in render%                        
raco setup:      /destdir/racket-8.6/usr/share/racket/pkgs/scribble-lib/scribble/html-render.rkt:1207:4: do-render-paragraph method in render-mixin             
raco setup:      /destdir/racket-8.6/usr/share/racket/pkgs/scribble-lib/scribble/base-render.rkt:969:4: render-nested-flow method in render
raco setup:      /destdir/racket-8.6/usr/share/racket/pkgs/scribble-lib/scribble/html-render.rkt:1775:4: render-nested-flow method in render-mixin              
raco setup:      /destdir/racket-8.6/usr/share/racket/pkgs/scribble-lib/scribble/html-render.rkt:1194:6: loop                                                   
raco setup:      [repeats 2 more times]                                         
raco setup:      /destdir/racket-8.6/usr/share/racket/pkgs/scribble-lib/scribble/html-render.rkt:1118:4: render-part-content method in render-mixin             
raco setup:      /destdir/racket-8.6/usr/share/racket/pkgs/scribble-lib/scribble/html-render.rkt:1184:14: loop                                                  
raco setup:      /destdir/racket-8.6/usr/share/racket/pkgs/scribble-lib/scribble/html-render.rkt:1118:4: render-part-content method in render-mixin             
raco setup:      ...                                                            
raco setup:                                                                     
failed          

Installing e.g. the liberation-ttf fonts fixes this problem.

If fonts are required for building, it would be good to get a better error message. Else, this may be a regression from 8.4

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

Reproduce the failure with raco setup in a minimalist environment without fonts, focusing on <pkgs>/racket-doc/scribblings/guide/guide.scrbl. Read the reported paths in pict/private/utils.rkt, pict/private/pict.rkt, and the Scribble renderers to determine whether missing fonts are expected. Done means either the build no longer fails without fonts or it reports the requirement clearly.

Written by the indexing model from the issue text.

Assessment

Domain
build-system, documentation
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 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.