Zenn
Open12

servoをビルドする

ken7253ken7253

とりあえずリポジトリはcloneしてあったのでそこから。

ken7253ken7253

https://github.com/servo/servo

README.mdに書いてあるとおりに進めてみる。
WSLなのでLinuxの手順に従う。

Linux

  • Install curl:
    • Arch: sudo pacman -S --needed curl
    • Debian, Ubuntu: sudo apt install curl
    • Fedora: sudo dnf install curl
    • Gentoo: sudo emerge net-misc/curl
  • Install uv: curl -LsSf https://astral.sh/uv/install.sh | sh
  • Install rustup: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  • Restart your shell to make sure cargo is available
  • Install the other dependencies: ./mach bootstrap
  • Build servoshell: ./mach build
ken7253ken7253

curlは元から入っているので uv をインストール。

ken7253ken7253

Rustの環境も整っているのでrustupもスキップ。

ken7253ken7253

Linux側のパッケージで依存しているものが解決される。

結構な数がエラーに

libgdal30
libopencv-imgcodecs4.5d:amd64
libopencv4.5d-jni
libopencv-videoio4.5d:amd64
libopencv4.5-java
libopencv-imgcodecs-dev:amd64
libopencv-contrib4.5d:amd64
libopencv-superres4.5d:amd64
libopencv-dev
libopencv-highgui4.5d:amd64
libopencv-highgui-dev:amd64
libopencv-features2d-dev:amd64
libgstreamer-plugins-bad1.0-dev:amd64
libopencv-videoio-dev:amd64
libopencv-calib3d-dev:amd64
libopencv-stitching-dev:amd64
libopencv-objdetect-dev:amd64
libopencv-contrib-dev:amd64
libopencv-videostab4.5d:amd64
libopencv-superres-dev:amd64
libopencv-videostab-dev:amd64

ken7253ken7253

apt --fix-broken install を試してみるように言われたので実行する。

ken7253ken7253

そうすると、パッケージの依存解決が始まるが取得エラーになる。

apt-get updateを実行すると治りそうなので実行する。

ken7253ken7253

再度./mach bootstrapを実行するとRustのクレートの依存解決が始まる。

しかし、cargo-deny 0.18.1rustcのバージョンが合わないと言われる。

error: cannot install package `cargo-deny 0.18.1`, it requires rustc 1.85.0 or newer, while the currently active rustc version is 1.80.1

rustcのバージョンが古すぎたのでrustup updateで更新。

rustup updateしてもrustcのバージョンは変わらずrustc 1.80.1 (3f5fd8dd4 2024-08-06)

rus-toolchain.tomlにバージョンが固定されていたのが原因かと思ったが、ブランチを最新化し忘れていただけだった。

ken7253ken7253

Buildしたあとにtarget/debug/servo https://demo.servo.orgでhttps://demo.servo.orgを閲覧できた。

servoでhttps://demo.servo.orgを閲覧したスクリーンショット

ken7253ken7253

一度開けたがその後またBuildしたりすると、エラーがでて起動に失敗する。

No build type specified so assuming `--dev`.
Io error: Broken pipe (os error 32)
Io error: Broken pipe (os error 32)
Io error: Broken pipe (os error 32)
Failed while running events loop: ExitFailure(1) (thread main, at ports/servoshell/desktop/events_loop.rs:88)
   0: servoshell::backtrace::print
             at /home/ken7253/project/servo/ports/servoshell/backtrace.rs:18:5
   1: servoshell::panic_hook::panic_hook
             at /home/ken7253/project/servo/ports/servoshell/panic_hook.rs:40:17
   2: core::ops::function::Fn::call
             at /home/ken7253/.rustup/toolchains/1.85.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:79:5
   3: <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call
             at /rustc/4d91de4e48198da2e33413efdcd9cd2cc0c46688/library/alloc/src/boxed.rs:2007:9
      std::panicking::rust_panic_with_hook
             at /rustc/4d91de4e48198da2e33413efdcd9cd2cc0c46688/library/std/src/panicking.rs:836:13
   4: std::panicking::begin_panic_handler::{{closure}}
             at /rustc/4d91de4e48198da2e33413efdcd9cd2cc0c46688/library/std/src/panicking.rs:701:13
   5: std::sys::backtrace::__rust_end_short_backtrace
             at /rustc/4d91de4e48198da2e33413efdcd9cd2cc0c46688/library/std/src/sys/backtrace.rs:168:18
   6: rust_begin_unwind
             at /rustc/4d91de4e48198da2e33413efdcd9cd2cc0c46688/library/std/src/panicking.rs:692:5
   7: core::panicking::panic_fmt
             at /rustc/4d91de4e48198da2e33413efdcd9cd2cc0c46688/library/core/src/panicking.rs:75:14
   8: core::result::unwrap_failed
             at /rustc/4d91de4e48198da2e33413efdcd9cd2cc0c46688/library/core/src/result.rs:1704:5
   9: core::result::Result<T,E>::expect
             at /home/ken7253/.rustup/toolchains/1.85.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:1061:23
  10: servoshell::desktop::events_loop::EventsLoop::run_app
             at /home/ken7253/project/servo/ports/servoshell/desktop/events_loop.rs:86:17
  11: servoshell::desktop::cli::main
             at /home/ken7253/project/servo/ports/servoshell/desktop/cli.rs:38:9
  12: servoshell::main
             at /home/ken7253/project/servo/ports/servoshell/lib.rs:38:5
  13: servo::main
             at /home/ken7253/project/servo/ports/servoshell/main.rs:26:13
  14: core::ops::function::FnOnce::call_once
             at /home/ken7253/.rustup/toolchains/1.85.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:250:5
  15: std::sys::backtrace::__rust_begin_short_backtrace
             at /home/ken7253/.rustup/toolchains/1.85.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/backtrace.rs:152:18
  16: std::rt::lang_start::{{closure}}
             at /home/ken7253/.rustup/toolchains/1.85.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs:195:18
  17: core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once
             at /rustc/4d91de4e48198da2e33413efdcd9cd2cc0c46688/library/core/src/ops/function.rs:284:13
      std::panicking::try::do_call
             at /rustc/4d91de4e48198da2e33413efdcd9cd2cc0c46688/library/std/src/panicking.rs:584:40
      std::panicking::try
             at /rustc/4d91de4e48198da2e33413efdcd9cd2cc0c46688/library/std/src/panicking.rs:547:19
      std::panic::catch_unwind
             at /rustc/4d91de4e48198da2e33413efdcd9cd2cc0c46688/library/std/src/panic.rs:358:14
      std::rt::lang_start_internal::{{closure}}
             at /rustc/4d91de4e48198da2e33413efdcd9cd2cc0c46688/library/std/src/rt.rs:174:48
      std::panicking::try::do_call
             at /rustc/4d91de4e48198da2e33413efdcd9cd2cc0c46688/library/std/src/panicking.rs:584:40
      std::panicking::try
             at /rustc/4d91de4e48198da2e33413efdcd9cd2cc0c46688/library/std/src/panicking.rs:547:19
      std::panic::catch_unwind
             at /rustc/4d91de4e48198da2e33413efdcd9cd2cc0c46688/library/std/src/panic.rs:358:14
      std::rt::lang_start_internal
             at /rustc/4d91de4e48198da2e33413efdcd9cd2cc0c46688/library/std/src/rt.rs:174:20
  18: std::rt::lang_start
             at /home/ken7253/.rustup/toolchains/1.85.0-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs:194:17
  19: main
  20: <unknown>
  21: __libc_start_main
  22: _start
[2025-03-05T13:57:53Z ERROR arboard::platform::linux::x11] Worker thread errored with: Unknown error while interacting with the clipboard: The X11 server closed the connection
[2025-03-05T13:57:55Z ERROR servoshell::panic_hook] Failed while running events loop: ExitFailure(1)
ken7253ken7253

一度だけ閲覧できただけで、その後から./mach run -dしてもイベントループまわりでpanicが発生してしまって落ちてしまうようになった。

issueを見ていたらこのBugが症状として近そう。

https://github.com/servo/servo/issues/35714

ログインするとコメントできます