Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Linux Kernel Patch Submission Tips

250 views

Published on

Newcomers to the Linux Kernel community are often unfamiliar with the patch submission process and how to interact with maintainers. This talk aims to improve the experience of first time patch submissions. This talk is in Chinese.

Published in: Software
  • Be the first to comment

Linux Kernel Patch Submission Tips

  1. 1. Linux Kernel Patch Submission Tips 蔡鎮宇 Tsai, Chen-Yu (wens) / 2017-08-06 www.puffinbrowser.com
  2. 2. #你誰啊 亂公告給Talk • Systems Engineer / SRE @ CloudMosa, Inc. (maker of Puffin Browser) • 批踢踢系統總監 • Linux Kernel Allwinner SoC Co-maintainer 2
  3. 3. 今天不提… • Git • C • 怎麼找東西寫 patch • 工具怎麼用 • Live Demo 3
  4. 4. 程式改好了… 4
  5. 5. 切 commit • 每個 commit 要獨立 • 每個 commit 做一件事 • 每個 commit 都要可以編 • 檢查 coding style 5
  6. 6. Commit Message phy: sun4i-usb: Support A83T USB PHYs The A83T has 3 USB PHYs, 1 for OTG, 1 for standard USB, 1 for USB HSIC. The phy initialization procedure is very different from other SoCs, but the PMU bits are the same, with additional bits for HSIC. Signed-off-by: Chen-Yu Tsai <wens@csie.org> 6
  7. 7. Commit 標題 phy: sun4i-usb: Support A83T USB PHYs The A83T has 3 USB PHYs, 1 for OTG, 1 for standard USB, 1 for USB HSIC. The phy initialization procedure is very different from other SoCs, but the PMU bits are the same, with additional bits for HSIC. Signed-off-by: Chen-Yu Tsai <wens@csie.org> 7 一行80字元內簡述更動內容
  8. 8. Commit Message phy: sun4i-usb: Support A83T USB PHYs The A83T has 3 USB PHYs, 1 for OTG, 1 for standard USB, 1 for USB HSIC. The phy initialization procedure is very different from other SoCs, but the PMU bits are the same, with additional bits for HSIC. Signed-off-by: Chen-Yu Tsai <wens@csie.org> 8 解釋更動背後的動機和情境
  9. 9. Signed-off-by phy: sun4i-usb: Support A83T USB PHYs The A83T has 3 USB PHYs, 1 for OTG, 1 for standard … Signed-off-by: Chen-Yu Tsai <wens@csie.org> 9 畫押:認證更動是自己寫的, 或是自己有權利貢獻的。
  10. 10. Signed-off-by • Developer's Certificate of Origin • 請見 Documentation/process/submitting- patches.rst • 需要用真名 10
  11. 11. 送 patch 11
  12. 12. 準則 • 送信時不要更動到內容 • 複製貼上很容易出錯 • 多個 patch 請寫 cover letter • 不要一次送太多 12
  13. 13. Cover Letter • 解釋一系列的 patch 在做什麼 • 如有需要,簡述每個 patch 的內容 • 預期 maintainer 怎麼處理 13
  14. 14. 工具 • scripts/checkpatch.pl • 自動化檢查 coding style (跟拼字) • scipts/get_maintainer.pl • 找出相關的 maintainer 跟 mailing list 14
  15. 15. 工具 • git format-patch • 生出 patch 的 email • git send-email • 自動送出去 15
  16. 16. Patch 送出去了! 然後呢?
  17. 17. 石沉大海 • Maintainer 度假去了 • 歐洲人常會放暑假 • 美國人放感恩節、聖誕節連續假期 • 寄錯人了… 17
  18. 18. Checkpatch errors • 你沒跑 checkpatch 對不對? • 改好重送 18
  19. 19. Does not apply • 你的修改是基於哪個版本? 哪個 repository? • 通常要基於 maintainer 的 -next 或 -fixes • 偷懶可用 linux-next • 也可能是別人的 patch 捷足先登 19
  20. 20. NACK • Reviewer 不同意變更的方向 • 思考有沒有其他的解法 20
  21. 21. Looks good, but… • Reviewer 認為有改進空間 • 討論,改進,送出新的版本 v(N+1) 21
  22. 22. Build error • 你有測試過你的程式嗎? 22
  23. 23. Build error w/ xxxconfig • Kconfig 相依性不對? • 一定需要某個選項有開或沒開? • 不能編成模組? • 平台限定? 23
  24. 24. Applied! • 沒事了! • 過幾天看有沒有出現在 maintainer 的 repository 或 是 linux-next 24
  25. 25. 回信要注意 • 回信一樣純文字 • 不要更動引用原文 • 回文回在前後文中間,不要回在最上面 • In-reply-to 標頭要有 25
  26. 26. 改進完了 26
  27. 27. 送第二版 • git format-patch -v2 • 要附修改紀錄 (changelog) • Reviewer 可能不會記得跟你說過什麼 27
  28. 28. Reviewer 不和善  • Reviewer 通常對事不對人 • 把 review 當成學習的機會 28
  29. 29. Maintainer 很辛苦 • 多數是無給薪志願者利用自己閒暇時間 • 一天的信件量很可觀 • Maintainer 也是人 29
  30. 30. Maintainer 的各種毛 • 回應周期 • 各式偏好 • 各平台或子系統的不成文規定 30
  31. 31. Q&A 31
  32. 32. 參考資料 • Write and Submit your first Linux kernel Patch • https://youtu.be/LLBrBBImJt4 • https://kernelnewbies.org/FirstKernelPatch 32
  33. 33. 謝謝大家 33

×