Eclipse p2 альтернатива для пользовательских обработчиков установки - PullRequest
2 голосов
/ 13 декабря 2010

До p2 можно было написать собственный обработчик установки с функцией, которая выполнялась для выполнения любой «пользовательской» задачи во время установки.

Я вижу, что с p2 пользовательский обработчик установки больше не поддерживается.Я постоянно слышу о том, что «пользовательские точки соприкосновения» являются заменой этому.

Однако я не могу найти какой-либо конкретный пример / документацию для него.

Может кто-нибудь сказать мне, как получить функциональность пользовательской установкиобработчики с менеджером обновлений p2.

Редактировать: Описание того, что я хочу сделать -

Мне нужно отредактировать файл eclipse.ini и установить -XmxСвойство для значения, основанного на том, работаем ли мы в 64-битной или 32-битной среде.

Редактировать 2: Я попытался создать файл p2.inf в своей функции со следующей строкой -

instructions.install = \
addJvmArg(jvmArg:-Xmx900m);

instructions.install.import= \
org.eclipse.equinox.p2.touchpoint.eclipse.addJvmArg,

и он работает, однако он не различает 32- и 64-разрядные.

Ответы [ 3 ]

2 голосов
/ 14 декабря 2010

p2.inf определенно является подходящим местом для выполнения индивидуальных действий.Это хорошее место для добавления аргументов vm в .ini.Вы можете поместить p2.inf в вашу функцию / плагин.

Обновлено 20 декабря :

Я пробовал на своемВ собственной среде он хорошо работает для установки разных аргументов vm при установке одной и той же функции на 32-битных и 64-битных Linux.Вы можете скачать пример кода , чтобы поиграть с ним.

#create a requirement on the IU fragment we are creating
requires.2.namespace=org.eclipse.equinox.p2.iu
requires.2.name=configure.com.example.yourfeature.linux.x86
requires.2.range=[1.0.0,1.0.0]
requires.2.greedy=true
requires.2.filter=(&(osgi.os=linux)(osgi.arch=x86))

#create a IU frament named configure.com.example.yourfeature.linux.x86 for linux 32 bit
units.0.id=configure.com.example.yourfeature.linux.x86
units.0.version=1.0.0
units.0.filter=(&(osgi.os=linux)(osgi.arch=x86))
units.0.provides.1.namespace=org.eclipse.equinox.p2.iu
units.0.provides.1.name=configure.com.example.yourfeature.linux.x86
units.0.provides.1.version=1.0.0
units.0.instructions.configure=addJvmArg(jvmArg:-Xmx500m);
units.0.instructions.configure.import=org.eclipse.equinox.p2.touchpoint.eclipse.addJvmArg,

#create a requirement on the IU fragment we are creating
requires.3.namespace=org.eclipse.equinox.p2.iu
requires.3.name=configure.com.example.yourfeature.linux.x86_64
requires.3.range=[1.0.0,1.0.0]
requires.3.greedy=true
requires.3.filter=(&(osgi.os=linux)(osgi.arch=x86_64))

#create a IU frament named configure.com.example.yourfeature.linux.x86_64 for linux 64 bit
units.1.id=configure.com.example.yourfeature.linux.x86_64
units.1.version=1.0.0
units.1.filter=(&(osgi.os=linux)(osgi.arch=x86_64))
units.1.provides.1.namespace=org.eclipse.equinox.p2.iu
units.1.provides.1.name=configure.com.example.yourfeature.linux.x86_64
units.1.provides.1.version=1.0.0
units.1.instructions.configure=org.eclipse.equinox.p2.touchpoint.eclipse.addJvmArg(jvmArg:-Xmx900m);
0 голосов
/ 12 марта 2015

Есть две статьи, которые объясняют, как этого добиться:

Первая часть охватывает чуть больше опций, вторая - только точки касания P2.

ВНИМАНИЕ: когда мы добавили пользовательские точки соприкосновения к нашему плагину, он начал взаимоблокировку (довольно часто, но не всегда) во время установки (мы не хотели рисковать и удалили их). Может быть, мы сделали что-то не так, но об этом нужно знать.

Встроенные сенсорные точки , похоже, работают нормально.

0 голосов
/ 13 декабря 2010

Я думаю, что самые полные документы по этому вопросу - Eclipse wiki . Вы, вероятно, заинтересованы в «собственных действиях с контактной точкой», но также возможно реализовать собственное действие с контактной точкой, то есть класс Java, который вызывается как часть процесса установки.

РЕДАКТИРОВАТЬ: Настройка метаданных содержит некоторую информацию о том, что вы можете поместить в файл p2.inf. Приведенный здесь пример:

 instructions.install = \
    ln(targetDir:@artifact,linkTarget:foo/lib.1.so,linkName:lib.so);\
    chmod(targetDir:@artifact,targetFile:lib/lib.so,permissions:755);
 instructions.install.import= \
    org.eclipse.equinox.p2.touchpoint.natives.ln,\
    org.eclipse.equinox.p2.touchpoint.natives.chmod
...