Stream: beginners

Topic: Roc in Docker


view this post on Zulip Tyler Brockmeyer (Feb 24 2022 at 09:53):

Hey, I'm brand new here, and I typically work on my Windows machine. I don't usually use the unix subsystem, as I usually just build docker images for these kinds of things. I have been trying to get Roc working in a docker image, but I seem to be unable to do so.

I have a Dockerfile like this:

FROM ubuntu
WORKDIR /root

# download dependencies
RUN apt-get update && apt-get install -y wget curl libasound2 libxcb-xinput0 libx11-6 libxcursor1 libxrandr2 libxi6 libx11-xcb1

# install roc
COPY roc.tar.gz roc.tar.gz
RUN mkdir roc && tar -xf roc.tar.gz -C roc

# install rust
RUN curl --proto '=https' --tlsv1.2 -sSf --output rustup https://sh.rustup.rs && sh rustup -y

# cleanup
RUN rm -rf roc.tar.gz rustup

and I'll build/run it with

docker build -t roc .
docker run -it roc

I can open the repl, but when I type any expression, such as "Hello, World!" from the tutorial, I get the following error:

root@a54d527d66f8:~/roc# RUST_BACKTRACE=full ./roc repl

  The rockin’ roc repl
────────────────────────

Enter an expression, or :help, or :exit/:q.

» "Hello, World!"
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Os { code: 2, kind: NotFound, message: "No such file or directory" }', compiler/build/src/link.rs:1001:6
stack backtrace:
   0:     0x55a1f5307abc - std::backtrace_rs::backtrace::libunwind::trace::hf6a6dfd7da937cb0
                               at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/../../backtrace/src/backtrace/libunwind.rs:90:5
   1:     0x55a1f5307abc - std::backtrace_rs::backtrace::trace_unsynchronized::hc596a19e4891f7f3
                               at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x55a1f5307abc - std::sys_common::backtrace::_print_fmt::hb16700db31584325
                               at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/sys_common/backtrace.rs:67:5
   3:     0x55a1f5307abc - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h231c4190cfa75162
                               at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/sys_common/backtrace.rs:46:22
   4:     0x55a1f494520c - core::fmt::write::h2a1462b5f8eea807
                               at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/core/src/fmt/mod.rs:1163:17
   5:     0x55a1f53033c5 - std::io::Write::write_fmt::h71ddfebc68685972
                               at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/io/mod.rs:1696:15
   6:     0x55a1f5309340 - std::sys_common::backtrace::_print::hcc197d4bebf2b369
                               at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/sys_common/backtrace.rs:49:5
   7:     0x55a1f5309340 - std::sys_common::backtrace::print::h335a66af06738c7c
                               at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/sys_common/backtrace.rs:36:9
   8:     0x55a1f5309340 - std::panicking::default_hook::{{closure}}::h6fac9ac9c8b79e52
                               at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/panicking.rs:210:50
   9:     0x55a1f5309c23 - std::panicking::default_hook::h341c1030c6a1161b
                               at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/panicking.rs:227:9
  10:     0x55a1f5309c23 - std::panicking::rust_panic_with_hook::h50680ff4b44510c6
                               at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/panicking.rs:624:17
  11:     0x55a1f530948a - std::panicking::begin_panic_handler::{{closure}}::h9371c0fbb1e8465a
                               at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/panicking.rs:521:13
  12:     0x55a1f53081c4 - std::sys_common::backtrace::__rust_end_short_backtrace::h9b3efa22a5768c0f
                               at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/sys_common/backtrace.rs:139:18
  13:     0x55a1f530940d - rust_begin_unwind
                               at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/panicking.rs:517:5
  14:     0x55a1f47aad51 - core::panicking::panic_fmt::h23b9203e89cc61cf
                               at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/core/src/panicking.rs:100:14
  15:     0x55a1f47aae43 - core::result::unwrap_failed::h32ef6b3156e8fc57
                               at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/core/src/result.rs:1616:5
  16:     0x55a1f4bccd0e - roc_build::link::module_to_dylib::h7f6dd50547d352ac
  17:     0x55a1f5120049 - roc_repl_cli::eval_and_format::h3824981905110238
  18:     0x55a1f5123f33 - roc_repl_cli::main::hbb6bb9cb1eb62d8c
  19:     0x55a1f4b34ae3 - roc::main::h7bc17e2a57cc1a87
  20:     0x55a1f4b32523 - std::sys_common::backtrace::__rust_begin_short_backtrace::h2e85261f9ed1f08d
  21:     0x55a1f4b3253f - std::rt::lang_start::{{closure}}::h6cfbd391927023bd
  22:     0x55a1f530776b - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once::hc56adab7a77ec6e3
                               at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/core/src/ops/function.rs:259:13
  23:     0x55a1f530776b - std::panicking::try::do_call::h29f013120c5abc65
                               at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/panicking.rs:403:40
  24:     0x55a1f530776b - std::panicking::try::h86d5b2b66caec4cf
                               at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/panicking.rs:367:19
  25:     0x55a1f530776b - std::panic::catch_unwind::h7dd136d787f51397
                               at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/panic.rs:133:14
  26:     0x55a1f530776b - std::rt::lang_start_internal::{{closure}}::h4a199351e630a8a5
                               at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/rt.rs:128:48
  27:     0x55a1f530776b - std::panicking::try::do_call::h20ceb9e5dff838c6
                               at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/panicking.rs:403:40
  28:     0x55a1f530776b - std::panicking::try::hc2abb46a5e41bd43
                               at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/panicking.rs:367:19
  29:     0x55a1f530776b - std::panic::catch_unwind::h52c3eb4408ad6dfb
                               at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/panic.rs:133:14
  30:     0x55a1f530776b - std::rt::lang_start_internal::hd15a47be08101c28
                               at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/rt.rs:128:20
  31:     0x55a1f4b36d82 - main
  32:     0x7fcbeb95a0b3 - __libc_start_main
  33:     0x55a1f48a761a - _start
  34:                0x0 - <unknown>

Any ideas? I'm assuming I'm missing some dependencies, since I'm starting with a docker image, but it's not clear which ones.

view this post on Zulip Tim Whiting (Feb 24 2022 at 15:00):

You are missing zig, I don't know what else.

view this post on Zulip Folkert de Vries (Feb 24 2022 at 15:05):

once the compiler is built you should not need zig

view this post on Zulip Folkert de Vries (Feb 24 2022 at 15:05):

well, just for platforms written in zig, but not for the repl at least

view this post on Zulip Anton (Feb 25 2022 at 08:15):

Hi @Tyler Brockmeyer, can you check if ld is installed, by executing ld --version?

view this post on Zulip Loric Brevet (Feb 28 2022 at 09:47):

As the Roc project is working correctly using Nix, I would maybe suggest using this Nix Docker image, and then let Nix install the dependencies instead of converting everything to Dockerfile steps

https://hub.docker.com/r/nixos/nix


Last updated: Jul 05 2025 at 12:14 UTC