3

我正在使用 Eclipse 3.5.2,并且我创建了一个 p2.inf 并包含以下信息:

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

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

我将 p2.inf 放在片段的 META-INF 文件夹中,但是当我安装更新站点时,libfoo.so 没有执行权限。

拔掉头发后,我尝试了引用不存在的 *.so 的 p2.inf,但似乎没有任何反应。没有任何类型的错误消息、异常或警告表明 P2 接触点操作失败...

这是怎么回事?有任何想法吗?

4

3 回答 3

3

根据org.eclipse.equinox.internal.p2.touchpoint.eclipse.actions.ChmodAction的以下评论,导入行应该是org.eclipse.equinox.p2.touchpoint.eclipse.chmod(即eclipse而不是natives

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

(为了比较,请参阅“本地人” chmod 操作

我还没有检查对像“os”这样的插值变量的支持。

于 2011-07-12T13:57:51.877 回答
3

在 Eclipse 3.6 中(不知道以前的版本),用来代替 @artifact 的变量是 ${artifact.location}。我不得不深入研究 p2 源代码才能找到它,但在 targetDir 参数中使用它就像一个魅力。

于 2010-07-31T06:23:23.517 回答
1

我注意到几件事:

  1. “touchpoint.natives.chmod”操作看起来不支持@artifact. 尝试org.eclipse.equinox.p2.touchpoint.eclipse.chmod改用。
  2. os似乎不是在安装时替换的参数。另外,查看 p2 源代码,如果“os”是一个参数,那么语法似乎实际上是${os}. (参见 ParameterizedProvisioningAction#processVariables)

请注意,wiki$version$上提到的和 `$qualifier$' 参数在元数据生成/发布时被替换,而不是在安装时。

于 2010-04-05T21:36:43.067 回答