Servo 是一个用 Rust 语言编写的原型 Web 浏览器引擎。它目前在64位macOS,64位Linux,64位Windows和Android上开发。
伺服欢迎大家的贡献。请参阅 CONTRIBUTING.md
和 HACKING_QUICKSTART.md
以获取入门帮助。
访问伺服项目页面以获取新闻和指南。
构建伺服需要 rustup,版本 1.8.0 或更高版本。如果你使用的是旧版本,请运行 。
rustup self update
要在 Windows 上安装,请下载并运行 rustup-init.exe
然后按照屏幕上的说明操作。
要在其他系统上安装,请运行:
curl https://sh.rustup.rs -sSf | sh
这也将下载当前稳定版本的 Rust,Servo 不会使用它。要跳过该步骤,请改为运行:
curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain none
参见 其他安装方法
请选择你的操作系统:
建议使用 Xcode 版本 10.2 或更高版本。
注意:在本地克隆项目后运行这些步骤。
cd servo
brew bundle install --file=etc/taskcluster/macos/Brewfile
brew bundle install --file=etc/taskcluster/macos/Brewfile-build
pip install virtualenv
sudo apt install python3-virtualenv python3-pip
./mach bootstrap
如果不起作用,请提交错误,然后运行以下命令:
./mach bootstrap
sudo apt install git curl autoconf libx11-dev libfreetype6-dev libgl1-mesa-dri \
libglib2.0-dev xorg-dev gperf g++ build-essential cmake libssl-dev \
liblzma-dev libxmu6 libxmu-dev \
libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev \
libgles2-mesa-dev libegl1-mesa-dev libdbus-1-dev libharfbuzz-dev ccache \
clang libunwind-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \
libgstreamer-plugins-bad1.0-dev autoconf2.13 llvm-dev
此外,还需要版本高于 16.2 的 GStreamer 的本地副本。你可以将其放在 中,也可以运行以对其进行设置。在 Ubuntu 20.04LTS 上,如果你安装了必要的软件包,则可以使用系统 GStreamer:
support/linux/gstreamer/gst
./mach bootstrap-gstreamer
sudo apt install gstreamer1.0-nice gstreamer1.0-plugins-bad
如果你使用的是 Ubuntu 16.04 或 Linux Mint 18,请在构建之前运行以避免 harfbuzz 错误。
export HARFBUZZ_SYS_NO_PKG_CONFIG=1
如果你在尝试删除和所有旧版本的 clang 时收到未定义的符号错误,请参阅 #22016。
gst_player_get_config
gir1.2-gst-plugins-bad-1.0
sudo dnf install python3 python3-virtualenv python3-pip python3-devel
python3 ./mach bootstrap
如果不起作用,请提交错误,然后运行以下命令:
python3 ./mach bootstrap
sudo dnf install curl libtool gcc-c++ libXi-devel libunwind-devel \
freetype-devel mesa-libGL-devel mesa-libEGL-devel glib2-devel libX11-devel \
libXrandr-devel gperf fontconfig-devel cabextract ttmkfdir expat-devel \
rpm-build openssl-devel cmake libX11-devel libXcursor-devel \
libXmu-devel dbus-devel ncurses-devel harfbuzz-devel \
ccache clang clang-libs python3-devel gstreamer1-devel \
gstreamer1-plugins-base-devel gstreamer1-plugins-bad-free-devel autoconf213 \
libjpeg-turbo-devel zlib libjpeg
sudo yum install python-virtualenv python-pip
./mach bootstrap
如果不起作用,请提交错误,然后运行以下命令:
./mach bootstrap
sudo yum install curl libtool gcc-c++ libXi-devel freetype-devel \
mesa-libGL-devel mesa-libEGL-devel glib2-devel libX11-devel libXrandr-devel \
gperf fontconfig-devel cabextract ttmkfdir python expat-devel rpm-build \
openssl-devel cmake3 libXcursor-devel libXmu-devel \
dbus-devel ncurses-devel python34 harfbuzz-devel \
ccache clang clang-libs llvm-toolset-7
内置内部和:
llvm-toolset
devtoolset
scl enable devtoolset-7 llvm-toolset-7 bash
设置了以下环境变量:
export CMAKE=cmake3
export LIBCLANG_PATH=/opt/rh/llvm-toolset-7/root/usr/lib64
sudo zypper install libX11-devel libexpat-devel Mesa-libEGL-devel Mesa-libGL-devel cabextract cmake \
dbus-1-devel fontconfig-devel freetype-devel gcc-c++ git glib2-devel gperf \
harfbuzz-devel libXcursor-devel libXi-devel libXmu-devel libXrandr-devel libopenssl-devel \
python3-pip python3-virtualenv rpm-build ccache llvm-clang libclang autoconf213 gstreamer-devel \
gstreamer-plugins-base-devel gstreamer-plugins-bad-devel
sudo pacman -S --needed base-devel git python python-virtualenv python-pip mesa cmake libxmu \
pkg-config ttf-fira-sans harfbuzz ccache llvm clang autoconf2.13 gstreamer gstreamer-vaapi \
gst-plugins-base gst-plugins-good gst-plugins-bad
sudo emerge net-misc/curl \
media-libs/freetype media-libs/mesa dev-util/gperf \
dev-python/virtualenv dev-python/pip dev-libs/openssl \
media-libs/harfbuzz dev-util/ccache sys-libs/libunwind \
x11-libs/libXmu x11-base/xorg-server sys-devel/clang \
media-libs/gstreamer media-libs/gst-plugins-bad media-libs/gst-plugins-base
设置了以下环境变量:
export LIBCLANG_PATH=$(llvm-config --prefix)/lib64
nix-shell etc/shell.nix
在运行 mach 之前,你需要在每个 shell 中运行它。
你还需要通过执行以下操作将环境变量设置为“C:\Python39\python.exe”:
PYTHON3
setx PYTHON3 "C:\Python39\python.exe" /m
这将在系统范围内为所有未来的命令窗口设置它。
/m
在普通的 Windows Shell (cmd) 中,执行以下操作:
pip install virtualenv
如果这不起作用,你可能需要重新启动才能使更改的 PATH 设置(通过 python 安装程序)生效。
请注意,MinGW 二进制文件将不起作用,因此请确保安装 MSVC 二进制文件。
请注意,你应该确保所有组件都是从 gstreamer 安装的,因为我们需要许多默认情况下未安装的可选库。
安装 Git for Windows (https://git-scm.com/download/win)。确实允许它将 git.exe 添加到 PATH 中(安装程序的默认设置很好)。
安装 Visual Studio Build Tools 2019 (https://visualstudio.microsoft.com/de/downloads/#build-tools-for-visual-studio-2019)。通过巧克力安装最容易:
choco install -y visualstudio2019buildtools --package-parameters="--add Microsoft.VisualStudio.Component.Roslyn.Compiler --add Microsoft.Component.MSBuild --add Microsoft.VisualStudio.Component.CoreBuildTools --add Microsoft.VisualStudio.Workload.MSBuildTools --add Microsoft.VisualStudio.Component.Windows10SDK --add Microsoft.VisualStudio.Component.VC.CoreBuildTools --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 --add Microsoft.VisualStudio.Component.VC.Redist.14.Latest --add Microsoft.VisualStudio.Component.VC.ATL --add Microsoft.VisualStudio.Component.VC.ATLMFC --add Microsoft.VisualStudio.Component.TextTemplating --add Microsoft.VisualStudio.Component.VC.CoreIde --add Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Core --add Microsoft.VisualStudio.Workload.VCTools"
如果你确实需要使用Visual Studio Installer(UI),请选择“使用C++进行桌面开发”并添加可选的“MSVC”,“C++-ATL”和“C++-MFC”(最新)。
Visual Studio 2019 Build Tools 必须安装到默认位置,否则 mach.bat 将找不到它们。
通过执行以下步骤,你可能会在 Windows 上体验更快的构建速度。(相关锈问题:https://github.com/rust-lang/rust/issues/37543)
%USERPROFILE%\.cargo\config
[target.x86_64-pc-windows-msvc] linker = "lld-link.exe"
如果你在使用默认设置的提示时遇到问题:
x64 typemach.bat
- 你可能需要手动选择并启动类型,例如在 Windows 菜单中。
x86_x64 Cross Tools Command Prompt for VS 2019 cd to/the/path/servo python mach build -d
如果你收到错误:
Cannot run mach in a path on a case-sensitive file system on Windows
- 以管理员身份打开命令提示符或PowerShell。
- 禁用伺服路径区分大小写,
fsutil.exe file SetCaseSensitiveInfo X:\path\to\servo disable
如果收到错误 api-ms-win-crt-runtime-l1-1-0.dll则将环境变量设置为包含 的适当目录,例如 。
DLL filenot found!WindowsSdkDirWindows KitRedist\ucrt\DLLs\x64\api-ms-win-crt-runtime-l1-1-0.dllC:\Program Files (x86)\Windows Kits\10
如果收到错误LIBCLANG_PATH则可能安装了 32 位默认目标,而不是 64 位目标。你可以使用 找到配置,并使用 设置默认值。
thread 'main' panicked at 'Unable to find libclang: "couldn\'t find any valid shared libraries matching: [\'clang.dll\', \'libclang.dll\'], set theenvironment variable to a path where one of these files can be found (invalid: ... invalid DLL (64-bit))])"'rustuprustup showrustup set default-host x86_64-pc-windows-msvc
运行以获取特定于 Android 的工具。有关详细信息,请参阅维基。
./mach bootstrap-android --build
你的CARGO_HOME需要指向(或位于)与伺服存储库相同的驱动器中(请参阅#28530)。
git clone https://github.com/servo/servo
cd servo
Servo 是用 Rust 包管理器 Cargo 构建的。我们还使用 Mozilla 的 Mach 工具来编排构建和其他任务。你可以这样称呼马赫:
在 Unix 系统上:
./mach [command] [arguments]
在 Windows 命令行上:
mach.bat [command] [arguments]
下面的例子将使用Unix,但同样适用于Windows。
Servo 的构建系统使用 rustup.rs 自动下载 Rust 编译器。这是由 rust 工具链
文件确定的 Rust Nightly 的特定版本。
在开发模式下构建伺服。这对于开发很有用,但生成的二进制文件非常慢:
./mach build --dev
./mach run tests/html/about-mozilla.html
用于基准测试、性能测试或实际使用。添加标志以创建优化版本:
--release
./mach build --release
./mach run --release tests/html/about-mozilla.html
注意:将同时构建和 .为了使编译速度更快一些,可以只编译伺服二进制文件:。
mach build
servo
libsimpleservo
./mach build --dev -p servo
如果你要对一个 crate 进行更改,导致另一个 crate 中的构建错误,请考虑以下情况而不是完整构建:
./mach check
它将运行 ,运行编译器的分析阶段(因此显示构建错误(如果有),但跳过代码生成阶段。这可能比完整构建快得多,尽管当然它不会生成你可以运行的二进制文件。
cargo check
对于 ARM(大多数手机):
armv7-linux-androideabi
./mach build --release --android
./mach package --release --android
对于 x86(通常用于模拟器):
./mach build --release --target i686-linux-android
./mach package --release --target i686-linux-android
使用以下命令运行伺服:
./servo [url] [arguments] # if you run with nightly build
./mach run [url] [arguments] # if you run with mach
# For example
./mach run https://www.google.com
-p INTERVAL打开探查器并每秒将信息转储到控制台
INTERVAL
-s SIZE设置用于绘画的拼贴大小;默认值为 512
-z禁用所有图形输出;对于运行JS/布局测试很有用
-Z help显示有用的输出以调试伺服
Ctrl+
L打开网址提示符(+在 Mac 上)
Cmd
L
Ctrl+
R重新加载当前页面(在 Mac 上为 +)
Cmd
R
Ctrl+
-缩小(在 Mac 上为 +)
Cmd
-
Ctrl+
=放大 (在 Mac 上为 +)
Cmd
=
Alt+
left arrow在历史记录中倒退(+在Mac上)
Cmd
left arrow
Alt+
right arrow在历史记录中前进(+在Mac上)
Cmd
right arrow
Esc或 + 退出伺服(在 Mac 上为 +)
Ctrl
Q
Cmd
Q
GStreamer>=1.16
gst-plugins-bad>=1.16
你可以使用很多 mach 命令。你可以使用 列出它们。
./mach --help