Netstack3 是在 Rust 中從頭開始開發的網路堆疊。我們正積極開發這個應用程式,我們鼓勵所有人一同貢獻!大部分的 Netstack3 (大約 90% 的程式碼行) 適用於各平台,也就是說,您可以在開發機器上建構及測試,無需建構所有 Fuuchsia 或在虛擬機器中執行。您可以使用一般的 cargo
開發工作流程 (cargo check
、cargo test
等)。
您可以查看優質第一批錯誤清單,瞭解開始處理的錯誤,以及第二次錯誤清單,瞭解接下來應處理的可解決錯誤。
本文件旨在協助您開始瞭解為 Netstack3 做出貢獻的基本概念。這可讓您從零開始建構及測試,並對 Netstack3 的各平台核心做出貢獻。
如果您有意貢獻內容,並想要與 Netstack3 開發人員聯絡,歡迎隨時與我聯繫!我們也會在 connectivity-dev@fuchsia.dev 郵寄清單上試用。
開始設定
- 取得原始碼
- 設定及建構 Fuchsia
- 您的
fx set
指令需要加入標記--with //src/connectivity/network/netstack3:bin --cargo-toml-gen
,才能使用 Cargo 啟用 Netstack3 開發。假設您在 x86 機器上開發,請使用fx set core.x64 --with //src/connectivity/network/netstack3:bin --cargo-toml-gen
。
- 您的
- Netstack3 各平台通用核心的原始碼位於
src/connectivity/network/netstack3/core
。 - 執行
fx build src/connectivity/network/netstack3/core:netstack3-core
來建構 Netstack3 核心。 - 執行
fx build build/rust:cargo_toml_gen
,然後執行fx gen-cargo //src/connectivity/network/netstack3/core:netstack3-core
,產生Cargo.toml
檔案以啟用cargo
的開發作業。 在
~/.cargo/config.toml
檔案中新增以下幾行內容,取代 Fuchsia 目錄的絕對路徑,並在本機開發目標與x86_64-unknown-linux-gnu
不同時替換目標:[target.x86_64-unknown-linux-gnu] rustflags = ["-L", "absolute_path_to_fuchsia_directory/out/default/host_x64/obj/third_party/boringssl"]
如果您沒有設定檔,可以只使用這些內容建立設定檔。如果不確定開發目標為何,請執行
rustup show
。這些設定行會指示cargo
在哪裡尋找 BoringSSL 的建構構件,我們使用這些資訊進行某些加密編譯作業。執行下列指令,將
rustup
設為使用 Fuchsia Rust 工具鍊:rustup toolchain link fuchsia $($FUCHSIA_DIR/scripts/youcompleteme/paths.py VSCODE_RUST_TOOLCHAIN) rustup default fuchsia
執行
cargo
指令 (例如cargo check
或cargo test
) 以查看實際運作情形!
現在起,在開發作業中,您大多只需使用 cargo
即可進行開發作業。有時候,如果 Netstack3 的依附元件有重大變更,可能會導致建構設定中斷。如果發生這種情況,請參閱疑難排解一節,瞭解如何修正建構作業。
疑難排解
- 使用
jiri update
提取最新變更後,如果無法正確執行cargo
,請嘗試下列做法:- 請移除
Cargo.lock
檔案並執行cargo clean
,然後再試一次 - 如果
cargo
仍無法正常運作,請嘗試完整清理版本: fx clean
:這會清除建構輸出內容,並準備執行全面簡潔的建構作業- 執行一開始執行的相同
fx set
指令 (機率為fx set core.x64 --with //src/connectivity/network/netstack3:bin --cargo-toml-gen
)。 fx build src/connectivity/network/netstack3/core:netstack3-core
fx build build/rust:cargo_toml_gen
- 請移除
促成變更
有興趣參與 Netstack3 嗎?我們歡迎您的加入!如果您不確定該從何處著手,請參考這份優質第一個錯誤清單或第二項錯誤清單。如果還是有點遺漏,歡迎隨時透過 connectivity-dev@fuchsia.dev 與我們聯絡。
如有 Issue Tracker 尚未追蹤的變更,希望您能提供這類變更,那真是太棒了!我們特別歡迎修正錯誤和改善說明文件。但您可以先與我們聯絡,確認我們有相同的進展,以免您花時間處理我們原本不受理的工作。
準備好捐款時,只要按照以下簡單步驟操作即可:
- 請參閱為 Fuchsia 貢獻心力的一般操作說明
- 參閱 Fuchsia 網路貢獻者指南
瞭解
如想深入瞭解 Netstack3 的設計和架構,請參閱我們的說明文件。