2010-04-05 57 views
3

我使用Eclipse 3.5.2,我已經創建了以下信息的p2.inf:P2接觸點chmod不工作?

instructions.install = \ 
chmod(targetDir:@artifact,targetFile:$os$/libfoo.so,permissions:755); 

instructions.install.import= \ 
org.eclipse.equinox.p2.touchpoint.natives.chmod 

我把片段的META-INF文件夾內的p2.inf,但是當我安裝更新站點,libfoo.so沒有執行權限。

把我的頭髮拉出來後,我嘗試了一個p2.inf引用一個不存在的* .so,但似乎沒有發生。沒有任何類型的錯誤消息,例外或警告指示P2接觸點操作失敗...

這是怎麼回事?有任何想法嗎?

回答

1

一對夫婦的事情,我注意到:

  1. 的「touchpoint.natives.chmod」動作看起來並不像它支持@artifact。嘗試使用org.eclipse.equinox.p2.touchpoint.eclipse.chmod來代替。
  2. os似乎不是安裝時替換的參數。另外,看看p2源代碼,如果「os」是一個參數,看起來語法實際上是${os}。 (見ParameterizedProvisioningAction#processVariables)

注意,$version$和`$預選賽$」上wiki提到的參數在元數據生成/發佈時間更換,而不是在安裝時。

+0

我在他們的文檔中找不到org.eclipse.equinox.p2.touchpoint.eclipse.chmod ...? – Michael 2010-04-06 22:25:00

+0

不幸的是,上述建議都沒有解決...... – Michael 2010-04-07 16:00:38

2

在Eclipse 3.6(不知道以前的版本)中,要使用的變量而不是@artifact是$ {artifact.location}。我不得不深入p2源代碼才能找到它,但在targetDir參數中使用它就像魅力一樣。

3

導入線應該org.eclipse.equinox.p2.touchpoint.eclipse.chmod(即而非當地人),根據從org.eclipse.equinox.internal.p2.touchpoint.eclipse.actions.ChmodAction

// This basically a copy of the chmod action in the native touchpoint, 
// only it provides @artifact support. 

以下注釋(爲進行比較,請參閱'natives' chmod action

我還沒有不支持插入像'os'這樣的變量。

+0

我知道這個問題已經有一年了。我剛剛添加了這個答案,所以我可以再次找到它。 :) – 2011-07-12 14:00:07

+0

好!一年後的一天,我還需要找到它! – giZm0 2012-10-05 12:13:26