為 Netstack3 提供貢獻

Netstack3 是在 Rust 中從頭開始開發的網路堆疊。我們正積極開發這個應用程式,我們鼓勵所有人一同貢獻!大部分的 Netstack3 (大約 90% 的程式碼行) 適用於各平台,也就是說,您可以在開發機器上建構及測試,無需建構所有 Fuuchsia 或在虛擬機器中執行。您可以使用一般的 cargo 開發工作流程 (cargo checkcargo 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 checkcargo 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 尚未追蹤的變更,希望您能提供這類變更,那真是太棒了!我們特別歡迎修正錯誤和改善說明文件。但您可以先與我們聯絡,確認我們有相同的進展,以免您花時間處理我們原本不受理的工作。

準備好捐款時,只要按照以下簡單步驟操作即可:

瞭解

如想深入瞭解 Netstack3 的設計和架構,請參閱我們的說明文件