2017-07-14 109 views
1

我一直在一大堆巴澤勒規則在我的公司最近和已經創建了特定於我公司的一些自定義規則。我注意到的一件事是,在創建規則時,我經常使用自定義設計的傳遞數據傳播來幫助我的規則完成工作。這是我的意思:巴澤爾傳遞結構公約

attrs = { 
    'deps': attr.label_list(
     providers=[ 
      'transitive_srcs', 
      'transitive_gens', 
      'transitive_data', 
      'transitive_reqs', 
      'transitive_deps', 
      'transitive_builds' 
     ], 
     allow_files=False 
    ) 
} 

這是什麼導致它是它創建了與其餘的標準bazel規則不兼容。如果我的規則取決於說cc_binary()那麼它期望cc_binary()發送超過額外的傳遞數據。關於我們應該如何制定規則,是否有任何約定?我很想跟隨一些或創建一些,以便共享規則更容易。

這裏就是我從代碼示例。 https://github.com/findmine/bazel-pex-rule

回答

1

有辦法爲Java rules創建本地供應商,但尚未對C++的規則很遺憾。這是正在進行中的工作。目前最好的方法是使用包含自定義規則的宏並在cc_.*規則中添加各種文件。

+0

現在我的做法是遵循CC_的定義*規則作爲準則,並調整我現有的PEX規則,以反映這一點。如果我可以在可變目標之間傳遞可變信息,那麼我可能不需要添加這些特殊情況傳遞提供者。 –

+0

你是什麼意思?您可以發送後續討論到[email protected],因爲這似乎需要更深入的討論。 –