servoをビルドする

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

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

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

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

シェルを再始動させてから./mach bootstrap
を実行。
実行されている内容はこれっぽい?

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

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

そうすると、パッケージの依存解決が始まるが取得エラーになる。
apt-get update
を実行すると治りそうなので実行する。

再度./mach bootstrap
を実行するとRustのクレートの依存解決が始まる。
しかし、cargo-deny 0.18.1
とrustc
のバージョンが合わないと言われる。
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
にバージョンが固定されていたのが原因かと思ったが、ブランチを最新化し忘れていただけだった。

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

一度開けたがその後また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)

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