Domanda

Prima di p2, si potrebbe scrivere un gestore di installazione personalizzata con una caratteristica che è stata eseguita per fare qualsiasi operazione 'su misura' in fase di installazione.

Vedo che con p2 installazione personalizzata gestore non è più supportato. Ho sentito parlare 'punti di contatto personalizzati' essere la sostituzione per questo.

Tuttavia non posso trovare alcun esempio concreto / documentazione per esso.

Qualcuno può dirmi come ottenere la funzionalità di installazione personalizzata gestori con il gestore degli aggiornamenti p2.

Modifica Una descrizione di ciò che voglio fare -

Ho bisogno di modificare il file eclipse.ini e impostare la proprietà -Xmx ad un valore a seconda che ci sono in esecuzione all'interno di un env 64 bit o 32 bit.

Modifica 2: Ho cercato di creare un file p2.inf nella mia funzione con la seguente riga -

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

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

e funziona, tuttavia non fa differenza tra 32 e 64 bit.

È stato utile?

Soluzione

p2.inf è sicuramente il posto giusto per eseguire azioni personalizzate. E 'un buon posto per aggiungere vm argomenti in .ini. Si potrebbe mettere un p2.inf sotto la vostra funzione / plug-in.

Aggiornato il 20 dic :.

Ho provato sul mio proprio ambiente, funziona bene per impostare diversi argomenti VM quando si installa la stessa caratteristica su Linux 32bit e 64bit. È possibile scaricare il esempio di codice di giocare con lui.

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

Altri suggerimenti

Credo che la maggior parte dei documenti completi in materia è il Eclipse wiki . Probabilmente stai interessato a "azioni touchpoint nativo", ma è anche possibile implementare la propria azione touchpoint, vale a dire una classe Java che viene richiamato come parte del processo di installazione.

EDIT: Personalizzazione Metadati contiene alcune informazioni su ciò che si può mettere in p2. il file inf. L'esempio c'è dato:

 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

Ci sono due articoli che spiegano come raggiungere questo obiettivo:

coperture primo un po 'più opzioni, secondo è solo di punti di contatto P2.

ATTENZIONE: quando abbiamo aggiunto i punti di contatto personalizzati per il nostro plugin, è iniziato deadlocking (spesso, ma non sempre) al momento dell'installazione (non volevamo il rischio e li ha rimossi). Forse abbiamo fatto qualcosa di sbagliato, ma questo è qualcosa di essere a conoscenza.

Built-in punti di contatto sembrano funzionare bene, però.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top