2013-03-20 76 views
0

我有一個構建配置,調用兩個配方。這兩個配方必須以確定的順序執行。構建 - mr.developer更改部件的順序

最後執行的配方是由mr.developer擴展從git存儲庫中提取的。但是,當mr.developer引入配方時,它將此視爲一個蛋,並首先執行此操作。這擾亂了正確的順序,並且構建失敗。

我試過設置egg=false所以配方不會先執行,但是這樣可以防止配方被全部執行,因爲它不是一個蛋。

爲了讓一個想法是什麼我buildout.cfg樣子:

[buildout] 
develop = . 
extensions = mr.developer 
auto-checkout = custom-recipe 
parts = 
    part-one 
    part-two 

[sources] 
custom-recipe = git http://location.of.repo 

[part-one] 
recipe = recipe.from.pypi 
src = ${buildout:directory} 

[part-two] 
recipe = custom-recipe 
src = ${part-one:src} 

其中的部分出現在buildout:parts的順序應該得到尊重。如果一個零件引用另一個零件,則可以更改該順序,以便依賴關係正確。我試圖通過參考part-onepart-two'欺騙'擴建,這是行不通的,因爲mr.developer已經指part-two

任何幫助將不勝感激。

+0

部件排序完全基於依賴關係。 'mr.developer'然而*具有*在部件排序之外的行爲,因爲它需要在其他任何東西之前安裝雞蛋。它不*弄亂訂單本身;第二部分將在第一部分之後運行,但第一部分可能會被忽略,因爲它不需要更新。因此,我認爲你的診斷在這裏是錯誤的。 – 2013-03-20 21:08:11

回答

1

經過一番測試後,我發現問題是什麼。配方有三個部分:構造函數,安裝和更新函數。在所有安裝發生之前調用構造函數,這導致了混淆。

我在構造函數中有一些依賴於其他部分的東西。由於在所有安裝發生之前調用構造函數,因此代碼失敗。將它移到安裝功能後,一切進展順利。