Pregunta

Antes de p2, uno podría escribir un manejador de instalación personalizada con una característica que se ejecuta para hacer cualquier tarea 'costumbre' durante la instalación.

veo que con p2 el manejador de instalación personalizada ya no es compatible. He estado escuchando acerca de los puntos de contacto 'personalizados' el reemplazo para eso.

Sin embargo no puedo encontrar ningún ejemplo concreto / documentación de la misma.

Puede alguien decirme cómo conseguir la funcionalidad de instalación personalizada manipuladores con el gestor de actualizaciones p2.

Editar Una descripción de lo que quiero hacer -

Tengo que editar el archivo eclipse.ini y establezca la propiedad -Xmx a un valor en función de si estamos corriendo dentro de un env de 64 bits o 32 bits.

Editar 2: He intentado crear un archivo p2.inf en mi función con la siguiente línea -

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

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

y funciona, sin embargo, no hace diferencia entre 32 y 64 bits.

¿Fue útil?

Solución

p2.inf definitivamente es el lugar adecuado para realizar acciones personalizadas. Es un lugar bueno agregar vm argumentos en ini. Se puede poner un p2.inf debajo de la función / plug-in.

Actualizado el 20 dic .

Lo probé en mi propio entorno, funciona bien para establecer diferentes argumentos vm al instalar la misma característica de 32 bits y 64 bits de Linux. Se podría descargar el código de ejemplo para jugar con él.

#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);

Otros consejos

Creo que la mayoría de los documentos completos en la materia es el Eclipse wiki . Probablemente usted está interesado en "acciones touchpoint nativos", pero también es posible llevar a cabo su propia acción punto de contacto, es decir, una clase Java que se invoca como parte del proceso de instalación.

EDIT: Personalización de metadatos contiene algo de información sobre lo que puede poner en el P2. inf. El ejemplo dado no es:

 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

Hay dos artículos que explican cómo lograr esto:

En primer lugar una tapa un poco más opciones, la segunda es sólo alrededor de los puntos de contacto P2.

ADVERTENCIA: cuando añadimos puntos de contacto personalizados a nuestro plugin, que comenzó deadlocking (muy a menudo, pero no siempre) durante la instalación (que no queríamos el riesgo y los quitó). Tal vez que hicimos algo mal pero esto es algo a tener en cuenta.

incorporado puntos de contacto parece que funcionan bien, sin embargo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top