Skip to content

Dev container: increase caches of to avoid recompilation? #5646

@richb-hanover

Description

@richb-hanover

What's up?

In #5644 I describe how installing mdbook and mdbook-footnote solved the problem running web:run-book.

I note that each step (installing mdbook, installing mdbook-footnote, web:run-book) downloads and/or compiles a whole slew of files, many of them the same. For example:

  • all three compile "unicode-ident v1.0.22"
  • all three compile "proc-macro2 v1.0.103"
  • the first two steps compile "itoa v1.0.15", the last compiles "itoa v1.0.16"

Is there a way to avoid re-compilation? Thanks

vscode ➜ /workspaces/prql (main) $ task web:run-book
task: [web:run-book] mdbook serve --port=3000 -n 0.0.0.0
"mdbook": executable file not found in $PATH
task: Failed to run task "web:run-book": exit status 127

vscode ➜ /workspaces/prql (main) $ cargo install --locked mdbook
info: syncing channel updates for '1.91.1-aarch64-unknown-linux-gnu'
info: latest update on 2025-11-10, rust version 1.91.1 (ed61e7d7e 2025-11-07)
info: component 'clippy' for target 'aarch64-unknown-linux-gnu' is up to date
info: component 'rustfmt' for target 'aarch64-unknown-linux-gnu' is up to date
info: downloading component 'rust-std' for 'wasm32-unknown-unknown'
info: installing component 'rust-std' for 'wasm32-unknown-unknown'
    Updating crates.io index
  Downloaded mdbook v0.5.2
  Downloaded 1 crate (135.8KiB) in 0.21s
  Installing mdbook v0.5.2
    Updating crates.io index
    Updating crates.io index
  Downloaded atomic-waker v1.1.2
  Downloaded cpufeatures v0.2.17
  Downloaded futures-sink v0.3.31
  Downloaded block-buffer v0.10.4
  Downloaded tower-service v0.3.3
  Downloaded crypto-common v0.1.7
  Downloaded tower-layer v0.3.3
  Downloaded http-range-header v0.4.2
  Downloaded topological-sort v0.2.2
  Downloaded futf v0.1.5
  Downloaded form_urlencoded v1.2.2
  Downloaded percent-encoding v2.3.2
  Downloaded utf-8 v0.7.6
  Downloaded axum-core v0.5.5
  Downloaded itoa v1.0.15
  Downloaded generic-array v0.14.7
  Downloaded mdbook-markdown v0.5.2
  Downloaded new_debug_unreachable v1.0.6
  Downloaded phf_shared v0.13.1
  Downloaded siphasher v1.0.1
  Downloaded phf v0.13.1
  Downloaded precomputed-hash v0.1.1
  Downloaded version_check v0.9.5
  Downloaded crossbeam-utils v0.8.21
  Downloaded typenum v1.19.0
  Downloaded pulldown-cmark-escape v0.11.0
  Downloaded phf_generator v0.13.1
  Downloaded mime v0.3.17
  Downloaded hex v0.4.3
  Downloaded matchers v0.2.0
  Downloaded string_cache_codegen v0.6.1
  Downloaded phf_codegen v0.13.1
  Downloaded clap_complete v4.5.61
  Downloaded mac v0.1.1
  Downloaded web_atoms v0.2.0
  Downloaded tracing-log v0.2.0
  Downloaded pathdiff v0.2.3
  Downloaded mdbook-renderer v0.5.2
  Downloaded string_cache v0.9.0
  Downloaded lock_api v0.4.14
  Downloaded sync_wrapper v1.0.2
  Downloaded serde_spanned v1.0.3
  Downloaded mdbook-summary v0.5.2
  Downloaded scopeguard v1.2.0
  Downloaded httpdate v1.0.3
  Downloaded notify-debouncer-mini v0.7.0
  Downloaded ucd-trie v0.1.7
  Downloaded inotify v0.11.0
  Downloaded http-body v1.0.1
  Downloaded ego-tree v0.10.0
  Downloaded tracing-core v0.1.35
  Downloaded serde_urlencoded v0.7.1
  Downloaded matchit v0.8.4
  Downloaded nu-ansi-term v0.50.3
  Downloaded tungstenite v0.28.0
  Downloaded notify-types v2.0.0
  Downloaded tracing v0.1.43
  Downloaded mime_guess v2.0.5
  Downloaded crossbeam-deque v0.8.6
  Downloaded tower v0.5.2
  Downloaded toml_writer v1.0.4
  Downloaded tower-http v0.6.7
  Downloaded tendril v0.4.3
  Downloaded toml_parser v1.0.4
  Downloaded socket2 v0.6.1
  Downloaded parking_lot v0.12.5
  Downloaded toml v0.9.8
  Downloaded zerocopy v0.8.31
  Downloaded html5ever v0.36.1
  Downloaded mio v1.1.0
  Downloaded pest v2.8.4
  Downloaded elasticlunr-rs v3.0.2
  Downloaded tokio-util v0.7.17
  Downloaded serde_json v1.0.145
  Downloaded hyper v1.8.1
  Downloaded axum v0.8.7
  Downloaded indexmap v2.12.1
  Downloaded hyper-util v0.1.18
  Downloaded http v1.4.0
  Downloaded handlebars v6.3.2
  Downloaded ryu v1.0.20
  Downloaded log v0.4.28
  Downloaded crossbeam-epoch v0.9.18
  Downloaded ignore v0.4.25
  Downloaded httparse v1.10.1
  Downloaded data-encoding v2.9.0
  Downloaded thiserror v2.0.17
  Downloaded smallvec v1.15.1
  Downloaded font-awesome-as-a-crate v0.3.0
  Downloaded sha2 v0.10.9
  Downloaded ppv-lite86 v0.2.21
  Downloaded pest_meta v2.8.4
  Downloaded pest_derive v2.8.4
  Downloaded parking_lot_core v0.9.12
  Downloaded num-order v1.2.0
  Downloaded notify v8.2.0
  Downloaded digest v0.10.7
  Downloaded base64 v0.22.1
  Downloaded serde_path_to_error v0.1.20
  Downloaded toml_datetime v0.7.3
  Downloaded tokio-tungstenite v0.28.0
  Downloaded tokio-macros v2.6.0
  Downloaded mdbook-html v0.5.2
  Downloaded thiserror-impl v2.0.17
  Downloaded sha1 v0.10.6
  Downloaded rand_chacha v0.9.0
  Downloaded pest_generator v2.8.4
  Downloaded libc v0.2.177
  Downloaded tokio v1.48.0
  Downloaded opener v0.8.3
  Downloaded num-modular v0.6.1
  Downloaded mdbook-driver v0.5.2
  Downloaded markup5ever v0.36.1
  Downloaded http-body-util v0.1.3
  Downloaded futures-channel v0.3.31
  Downloaded 115 crates (6.9MiB) in 1.12s
   Compiling proc-macro2 v1.0.103
   Compiling unicode-ident v1.0.22
   Compiling quote v1.0.42
   Compiling libc v0.2.177
   Compiling log v0.4.28
   Compiling memchr v2.7.6
   Compiling serde_core v1.0.228
   Compiling itoa v1.0.15
   Compiling cfg-if v1.0.4
   Compiling pin-project-lite v0.2.16
   Compiling once_cell v1.21.3
   Compiling aho-corasick v1.1.4
   Compiling serde v1.0.228
   Compiling regex-syntax v0.8.8
   Compiling bitflags v2.10.0
   Compiling tracing-core v0.1.35
   Compiling bytes v1.11.0
   Compiling version_check v0.9.5
   Compiling typenum v1.19.0
   Compiling syn v2.0.111
   Compiling generic-array v0.14.7
   Compiling smallvec v1.15.1
   Compiling getrandom v0.3.4
   Compiling futures-core v0.3.31
   Compiling ryu v1.0.20
   Compiling serde_json v1.0.145
   Compiling siphasher v1.0.1
   Compiling regex-automata v0.4.13
   Compiling phf_shared v0.13.1
   Compiling mio v1.1.0
   Compiling fastrand v2.3.0
   Compiling phf_generator v0.13.1
   Compiling http v1.4.0
   Compiling rustix v1.1.2
   Compiling parking_lot_core v0.9.12
   Compiling strsim v0.11.1
   Compiling fnv v1.0.7
   Compiling ident_case v1.0.1
   Compiling block-buffer v0.10.4
   Compiling crypto-common v0.1.7
   Compiling socket2 v0.6.1
   Compiling zerocopy v0.8.31
   Compiling winnow v0.7.14
   Compiling darling_core v0.20.11
   Compiling anyhow v1.0.100
   Compiling scopeguard v1.2.0
   Compiling new_debug_unreachable v1.0.6
   Compiling utf-8 v0.7.6
   Compiling regex v1.12.2
   Compiling thiserror v2.0.17
   Compiling linux-raw-sys v0.11.0
   Compiling serde_derive v1.0.228
   Compiling tracing-attributes v0.1.31
   Compiling tokio-macros v2.6.0
   Compiling tokio v1.48.0
   Compiling darling_macro v0.20.11
   Compiling thiserror-impl v2.0.17
   Compiling tracing v0.1.43
   Compiling lock_api v0.4.14
   Compiling toml_parser v1.0.4
   Compiling digest v0.10.7
   Compiling serde_spanned v1.0.3
   Compiling toml_datetime v0.7.3
   Compiling string_cache_codegen v0.6.1
   Compiling phf_codegen v0.13.1
   Compiling cpufeatures v0.2.17
   Compiling toml_writer v1.0.4
   Compiling ucd-trie v0.1.7
   Compiling httparse v1.10.1
   Compiling pin-utils v0.1.0
   Compiling unicase v2.8.1
   Compiling web_atoms v0.2.0
   Compiling pest v2.8.4
   Compiling toml v0.9.8
   Compiling parking_lot v0.12.5
   Compiling darling v0.20.11
   Compiling http-body v1.0.1
   Compiling futures-sink v0.3.31
   Compiling precomputed-hash v0.1.1
   Compiling pulldown-cmark v0.13.0
   Compiling mac v0.1.1
   Compiling futf v0.1.5
   Compiling pest_meta v2.8.4
   Compiling mdbook-core v0.5.2
   Compiling string_cache v0.9.0
   Compiling derive_builder_core v0.20.2
   Compiling ppv-lite86 v0.2.21
   Compiling futures-macro v0.3.31
   Compiling phf v0.13.1
   Compiling rand_core v0.9.3
   Compiling pulldown-cmark-escape v0.11.0
   Compiling futures-task v0.3.31
   Compiling slab v0.4.11
   Compiling tower-service v0.3.3
   Compiling utf8parse v0.2.2
   Compiling crossbeam-utils v0.8.21
   Compiling anstyle-parse v0.2.7
   Compiling futures-util v0.3.31
   Compiling rand_chacha v0.9.0
   Compiling derive_builder_macro v0.20.2
   Compiling pest_generator v2.8.4
   Compiling tendril v0.4.3
   Compiling tower-layer v0.3.3
   Compiling httpdate v1.0.3
   Compiling is_terminal_polyfill v1.70.2
   Compiling num-modular v0.6.1
   Compiling anstyle-query v1.1.5
   Compiling percent-encoding v2.3.2
   Compiling same-file v1.0.6
   Compiling anstyle v1.0.13
   Compiling mime v0.3.17
   Compiling colorchoice v1.0.4
   Compiling walkdir v2.5.0
   Compiling anstream v0.6.21
   Compiling num-order v1.2.0
   Compiling mime_guess v2.0.5
   Compiling markup5ever v0.36.1
   Compiling pest_derive v2.8.4
   Compiling derive_builder v0.20.2
   Compiling rand v0.9.2
   Compiling http-body-util v0.1.3
   Compiling sha1 v0.10.6
   Compiling terminal_size v0.4.3
   Compiling bstr v1.12.1
   Compiling futures-channel v0.3.31
   Compiling inotify-sys v0.1.5
   Compiling equivalent v1.0.2
   Compiling data-encoding v2.9.0
   Compiling atomic-waker v1.1.2
   Compiling clap_lex v0.7.6
   Compiling sync_wrapper v1.0.2
   Compiling hashbrown v0.16.1
   Compiling tempfile v3.23.0
   Compiling indexmap v2.12.1
   Compiling clap_builder v4.5.53
   Compiling tungstenite v0.28.0
   Compiling hyper v1.8.1
   Compiling inotify v0.11.0
   Compiling handlebars v6.3.2
   Compiling crossbeam-epoch v0.9.18
   Compiling html5ever v0.36.1
   Compiling form_urlencoded v1.2.2
   Compiling mdbook-markdown v0.5.2
   Compiling mdbook-renderer v0.5.2
   Compiling elasticlunr-rs v3.0.2
   Compiling sha2 v0.10.9
   Compiling ego-tree v0.10.0
   Compiling font-awesome-as-a-crate v0.3.0
   Compiling notify-types v2.0.0
   Compiling hex v0.4.3
   Compiling lazy_static v1.5.0
   Compiling sharded-slab v0.1.7
   Compiling notify v8.2.0
   Compiling serde_urlencoded v0.7.1
   Compiling mdbook-html v0.5.2
   Compiling clap v4.5.53
   Compiling crossbeam-deque v0.8.6
   Compiling hyper-util v0.1.18
   Compiling tokio-tungstenite v0.28.0
   Compiling axum-core v0.5.5
   Compiling tower v0.5.2
   Compiling globset v0.4.18
   Compiling mdbook-summary v0.5.2
   Compiling mdbook-preprocessor v0.5.2
   Compiling tokio-util v0.7.17
   Compiling matchers v0.2.0
   Compiling serde_path_to_error v0.1.20
   Compiling tracing-log v0.2.0
   Compiling thread_local v1.1.9
   Compiling http-range-header v0.4.2
   Compiling matchit v0.8.4
   Compiling nu-ansi-term v0.50.3
   Compiling topological-sort v0.2.2
   Compiling base64 v0.22.1
   Compiling shlex v1.3.0
   Compiling axum v0.8.7
   Compiling mdbook-driver v0.5.2
   Compiling tracing-subscriber v0.3.22
   Compiling tower-http v0.6.7
   Compiling ignore v0.4.25
   Compiling clap_complete v4.5.61
   Compiling notify-debouncer-mini v0.7.0
   Compiling opener v0.8.3
   Compiling pathdiff v0.2.3
   Compiling mdbook v0.5.2
    Finished `release` profile [optimized] target(s) in 34.75s
  Installing /usr/local/cargo/bin/mdbook
   Installed package `mdbook v0.5.2` (executable `mdbook`)

vscode ➜ /workspaces/prql (main) $ task web:run-book
task: [web:run-book] mdbook serve --port=3000 -n 0.0.0.0
 INFO Book building has started
ERROR The command `mdbook-footnote` wasn't found, is the `footnote` preprocessor installed? If you want to ignore this error when the `footnote` preprocessor is not installed, set `optional = true` in the `[preprocessor.footnote]` section of the book.toml configuration file.
ERROR Unable to run the preprocessor `footnote`
        Caused by: No such file or directory (os error 2)
task: Failed to run task "web:run-book": exit status 101

vscode ➜ /workspaces/prql (main) $ cargo install --locked mdbook-footnote
    Updating crates.io index
  Downloaded mdbook-footnote v0.2.0
  Downloaded 1 crate (16.8KiB) in 0.13s
  Installing mdbook-footnote v0.2.0
    Updating crates.io index
    Updating crates.io index
  Downloaded mdbook-preprocessor v0.5.1
  Downloaded env_filter v0.1.4
  Downloaded mdbook-core v0.5.1
  Downloaded tracing-attributes v0.1.30
  Downloaded env_logger v0.11.8
  Downloaded tracing-core v0.1.34
  Downloaded tracing v0.1.41
  Downloaded winnow v0.7.13
  Downloaded syn v2.0.110
  Downloaded jiff v0.2.16
  Downloaded 10 crates (1.4MiB) in 0.23s
   Compiling proc-macro2 v1.0.103
   Compiling unicode-ident v1.0.22
   Compiling quote v1.0.42
   Compiling serde_core v1.0.228
   Compiling memchr v2.7.6
   Compiling regex-syntax v0.8.8
   Compiling utf8parse v0.2.2
   Compiling anyhow v1.0.100
   Compiling anstyle-parse v0.2.7
   Compiling serde v1.0.228
   Compiling serde_json v1.0.145
   Compiling once_cell v1.21.3
   Compiling anstyle-query v1.1.5
   Compiling anstyle v1.0.13
   Compiling winnow v0.7.13
   Compiling aho-corasick v1.1.4
   Compiling is_terminal_polyfill v1.70.2
   Compiling colorchoice v1.0.4
   Compiling anstream v0.6.21
   Compiling tracing-core v0.1.34
   Compiling toml_writer v1.0.4
   Compiling syn v2.0.110
   Compiling itoa v1.0.15
   Compiling ryu v1.0.20
   Compiling pin-project-lite v0.2.16
   Compiling clap_lex v0.7.6
   Compiling log v0.4.28
   Compiling regex-automata v0.4.13
   Compiling strsim v0.11.1
   Compiling toml_parser v1.0.4
   Compiling clap_builder v4.5.53
   Compiling serde_spanned v1.0.3
   Compiling toml_datetime v0.7.3
   Compiling toml v0.9.8
   Compiling jiff v0.2.16
   Compiling regex v1.12.2
   Compiling clap v4.5.53
   Compiling tracing-attributes v0.1.30
   Compiling serde_derive v1.0.228
   Compiling tracing v0.1.41
   Compiling env_filter v0.1.4
   Compiling env_logger v0.11.8
   Compiling mdbook-core v0.5.1
   Compiling mdbook-preprocessor v0.5.1
   Compiling mdbook-footnote v0.2.0
    Finished `release` profile [optimized] target(s) in 12.26s
  Installing /usr/local/cargo/bin/mdbook-footnote
   Installed package `mdbook-footnote v0.2.0` (executable `mdbook-footnote`)

vscode ➜ /workspaces/prql (main) $ task web:run-book
task: [web:run-book] mdbook serve --port=3000 -n 0.0.0.0
 INFO Book building has started
   Compiling unicode-ident v1.0.22
   Compiling memchr v2.7.6
   Compiling itoa v1.0.16
   Compiling serde_core v1.0.228
   Compiling libc v0.2.178
   Compiling anyhow v1.0.100
   Compiling ryu v1.0.21
   Compiling regex-syntax v0.8.8
   Compiling proc-macro2 v1.0.103
   Compiling num-traits v0.2.19
   Compiling psm v0.1.28
   Compiling aho-corasick v1.1.4
   Compiling foldhash v0.1.5
   Compiling once_cell v1.21.3
   Compiling quote v1.0.42
   Compiling winnow v0.7.14
   Compiling allocator-api2 v0.2.21
   Compiling syn v2.0.111
   Compiling equivalent v1.0.2
   Compiling time v0.3.41
   Compiling cfg-if v1.0.4
   Compiling stacker v0.1.22
   Compiling hashbrown v0.15.5
   Compiling tracing-core v0.1.36
   Compiling regex-automata v0.4.13
   Compiling serde_json v1.0.146
   Compiling serde_spanned v1.0.4
   Compiling toml_datetime v0.7.5+spec-1.1.0
   Compiling toml_parser v1.0.6+spec-1.1.0
   Compiling dyn-clone v1.0.20
   Compiling log v0.4.29
   Compiling pin-project-lite v0.2.16
   Compiling unicode-segmentation v1.12.0
   Compiling utf8parse v0.2.2
   Compiling toml_writer v1.0.6+spec-1.1.0
   Compiling either v1.15.0
   Compiling toml v0.9.10+spec-1.1.0
   Compiling chumsky v0.12.0
   Compiling itertools v0.14.0
   Compiling anstyle-parse v0.2.7
   Compiling semver v1.0.27
   Compiling winnow v0.6.26
   Compiling csv-core v0.1.13
   Compiling darling_core v0.20.11
   Compiling serde_derive_internals v0.29.1
   Compiling regex v1.12.2
   Compiling anstyle v1.0.13
   Compiling is_terminal_polyfill v1.70.2
   Compiling unicode-width v0.1.14
   Compiling unicase v2.8.1
   Compiling yansi v1.0.1
   Compiling unicode_categories v0.1.1
   Compiling bitflags v2.10.0
   Compiling anstyle-query v1.1.5
   Compiling iana-time-zone v0.1.64
   Compiling colorchoice v1.0.4
   Compiling anstream v0.6.21
   Compiling chrono v0.4.42
   Compiling ariadne v0.5.1
   Compiling serde_derive v1.0.228
   Compiling ref-cast-impl v1.0.25
   Compiling strum_macros v0.27.2
   Compiling schemars_derive v1.1.0
   Compiling ref-cast v1.0.25
   Compiling tracing-attributes v0.1.31
   Compiling thiserror-impl v1.0.69
   Compiling darling_macro v0.20.11
   Compiling darling v0.20.11
   Compiling enum-as-inner v0.6.1
   Compiling derive_builder_core v0.20.2
   Compiling strum v0.27.2
   Compiling pulldown-cmark v0.13.0
   Compiling sqlformat v0.3.5
   Compiling tracing v0.1.44
   Compiling thiserror v1.0.69
   Compiling csv v1.4.0
   Compiling ansi-to-html v0.2.2
   Compiling derive_builder_macro v0.20.2
   Compiling pulldown-cmark-to-cmark v21.1.0
   Compiling derive_builder v0.20.2
   Compiling serde v1.0.228
   Compiling vergen-lib v0.1.5
   Compiling vergen v9.0.2
   Compiling vergen-gitcl v1.0.2
   Compiling schemars v1.1.0
   Compiling mdbook-core v0.5.2
   Compiling sqlparser v0.60.0
   Compiling prqlc v0.13.11 (/workspaces/prql/prqlc/prqlc)
   Compiling prqlc-parser v0.13.11 (/workspaces/prql/prqlc/prqlc-parser)
   Compiling mdbook-preprocessor v0.5.2
   Compiling mdbook-prql v0.13.11 (/workspaces/prql/web/book)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 27.07s
     Running `/workspaces/prql/target/debug/mdbook-prql supports html`
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.11s
     Running `/workspaces/prql/target/debug/mdbook-prql`
Running PRQL comparison preprocessor
 INFO Running the html backend
 INFO HTML book written to `/workspaces/prql/web/book/book`
 INFO Serving on: http://0.0.0.0:3000
 INFO Watching for changes...

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions