Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[tycho-user] Remove p2 Folder in Materialized Products

Hej,

I'm using Tycho 0.16.0. and eclipse-repository to build a lot of products, which works very well so far.

In the materialized product folders I'm a little bothered about this additional eclipsec.exe, which I managed to remove via a productfilename.p2.inf and the entry

instructions.configure=org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/eclipsec.exe);

Now I got an additional folder named "p2" below the $installFolder,
which I do not need either, because we do not use the update feature
within the products. This folder is with its 50Mb quite big, because the
cache below org.eclipse.equinox.p2.core contains a self made JRE
feature, which contains a complete JRE within its rootfiles (we are using this approach as an replacement for PDEs "Bundle JRE"-Feature). So I just thought of deleting this folder with the same mechanism that works for eclipsec.exe, I extended productfilename.p2.inf like so:

instructions.configure=\
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/eclipsec.exe);\
org.eclipse.equinox.p2.touchpoint.natives.remove(path:${installFolder}/p2/);\

Unfortunately, this throws an IOException (see output from "mvn clean verify" [0], and the .log [1]).

Obviously, p2 first backups each file that it's going to remove, and while this backup the IOException occurs (some sort of concurrency problem maybe). Having a look at the source of p2's RemoveAction, I guess this behavior is not configurable.

So what would you suggest to do? Is there another approach to suppress the generation of a p2 folder in materialized products? Any help would be greatly appreciated! Regards,

Mirko Swillus


[0] Output from "mvn clean verify":

...
An error occurred while configuring the installed items
  session context was:(profile=DefaultProfile,
phase=org.eclipse.equinox.internal.p2.engine.phases.Configure,
operand=null --> [R]com.foo.casy.product
2.0.2.SNAPSHOT-201211151629,
action=org.eclipse.equinox.internal.p2.touchpoint.natives.actions.RemoveAction).
  Backup of file
C:\Users\mirkos\workspaces\com.foo.build\com.foo.build\com.foo.products\target\products\com.foo.casy.product\win32\win32\x86\someproduct\p2 failed.
  Caused by:  java.io.IOException: Der Prozess kann nicht auf die Datei
zugreifen, da ein anderer Prozess einen Teil der Datei gesperrt hat
  Application failed, log file location:
C:\Users\mirkos\workspaces\com.foo.build\com.foo.build\workspace\.metadata\.log
...

[1] the workspace .log (please excuse German OS locale):

!SESSION 2012-11-15 17:30:21.294 -----------------------------------------------
eclipse.buildId=unknown
java.version=1.7.0_05
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE
Framework arguments: -eclipse.keyring C:\Users\mirkos\AppData\Local\Temp\tycho6133239347861452277secure_storage Command-line arguments: -eclipse.keyring C:\Users\mirkos\AppData\Local\Temp\tycho6133239347861452277secure_storage

!ENTRY org.eclipse.equinox.p2.touchpoint.natives 4 0 2012-11-15 17:30:21.295
!MESSAGE Backup store modified externally! 11 items out of 10 items restored. Remaining items can not be found.

!ENTRY org.eclipse.equinox.p2.engine 4 4 2012-11-15 17:30:21.296
!MESSAGE An error occurred while committing the engine session for profile: DefaultProfile. !SUBENTRY 1 org.eclipse.equinox.p2.touchpoint.natives 4 0 2012-11-15 17:30:21.296 !MESSAGE Restore of backup failed - see log for details. Backup directory name: DefaultProfile_27609d034ee0_c0a80a83e929.
!STACK 0
java.io.IOException: Errors while restoring - see earlier logged errors
at org.eclipse.equinox.internal.p2.touchpoint.natives.BackupStore.close(BackupStore.java:489) at org.eclipse.equinox.internal.p2.touchpoint.natives.BackupStore.restore(BackupStore.java:452) at org.eclipse.equinox.internal.p2.touchpoint.natives.LazyBackupStore.restore(LazyBackupStore.java:53) at org.eclipse.equinox.internal.p2.touchpoint.natives.NativeTouchpoint.rollback(NativeTouchpoint.java:108) at org.eclipse.equinox.internal.p2.engine.EngineSession.rollback(EngineSession.java:194)
	at org.eclipse.equinox.internal.p2.engine.Engine.perform(Engine.java:84)
	at org.eclipse.equinox.internal.p2.engine.Engine.perform(Engine.java:44)
at org.eclipse.equinox.internal.provisional.p2.director.PlanExecutionHelper.executePlan(PlanExecutionHelper.java:41) at org.eclipse.equinox.internal.provisional.p2.director.PlanExecutionHelper.executePlan(PlanExecutionHelper.java:23) at org.eclipse.equinox.internal.p2.director.app.DirectorApplication.executePlan(DirectorApplication.java:767) at org.eclipse.equinox.internal.p2.director.app.DirectorApplication.planAndExecute(DirectorApplication.java:760) at org.eclipse.equinox.internal.p2.director.app.DirectorApplication.performProvisioningActions(DirectorApplication.java:747) at org.eclipse.equinox.internal.p2.director.app.DirectorApplication.run(DirectorApplication.java:1040) at org.eclipse.tycho.p2.tools.director.DirectorApplicationWrapper$DirectorApplicationWrapperCommand.execute(DirectorApplicationWrapper.java:43) at org.eclipse.tycho.plugins.p2.director.DirectorMojo.execute(DirectorMojo.java:116) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
	at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)

!ENTRY org.eclipse.equinox.p2.engine 4 4 2012-11-15 17:30:21.307
!MESSAGE An error occurred while configuring the installed items
!SUBENTRY 1 org.eclipse.equinox.p2.engine 4 0 2012-11-15 17:30:21.308
!MESSAGE session context was:(profile=DefaultProfile, phase=org.eclipse.equinox.internal.p2.engine.phases.Configure, operand=null --> [R]com.foo.casy.product 2.0.2.SNAPSHOT-201211151629, action=org.eclipse.equinox.internal.p2.touchpoint.natives.actions.RemoveAction). !SUBENTRY 1 org.eclipse.equinox.p2.touchpoint.natives 4 0 2012-11-15 17:30:21.308 !MESSAGE Backup of file C:\Users\mirkos\workspaces\com.foo.build\com.foo.build\com.foo.products\target\products\com.foo.casy.product\win32\win32\x86\someproduct\p2 failed.
!STACK 0
java.io.IOException: Der Prozess kann nicht auf die Datei zugreifen, da ein anderer Prozess einen Teil der Datei gesperrt hat
	at java.io.FileInputStream.readBytes(Native Method)
	at java.io.FileInputStream.read(FileInputStream.java:220)
at org.eclipse.equinox.internal.p2.touchpoint.natives.Util.copyStream(Util.java:219) at org.eclipse.equinox.internal.p2.touchpoint.natives.BackupStore.moveToBackup(BackupStore.java:269) at org.eclipse.equinox.internal.p2.touchpoint.natives.BackupStore.backup(BackupStore.java:243) at org.eclipse.equinox.internal.p2.touchpoint.natives.BackupStore.backupAll(BackupStore.java:301) at org.eclipse.equinox.internal.p2.touchpoint.natives.BackupStore.backupAll(BackupStore.java:299) at org.eclipse.equinox.internal.p2.touchpoint.natives.BackupStore.backupAll(BackupStore.java:299) at org.eclipse.equinox.internal.p2.touchpoint.natives.BackupStore.backupAll(BackupStore.java:299) at org.eclipse.equinox.internal.p2.touchpoint.natives.BackupStore.backupAll(BackupStore.java:299) at org.eclipse.equinox.internal.p2.touchpoint.natives.LazyBackupStore.backupAll(LazyBackupStore.java:79) at org.eclipse.equinox.internal.p2.touchpoint.natives.actions.RemoveAction.execute(RemoveAction.java:37) at org.eclipse.equinox.internal.p2.engine.ParameterizedProvisioningAction.execute(ParameterizedProvisioningAction.java:35)
	at org.eclipse.equinox.internal.p2.engine.Phase.mainPerform(Phase.java:174)
	at org.eclipse.equinox.internal.p2.engine.Phase.perform(Phase.java:92)
at org.eclipse.equinox.internal.p2.engine.PhaseSet.perform(PhaseSet.java:47)
	at org.eclipse.equinox.internal.p2.engine.Engine.perform(Engine.java:75)
	at org.eclipse.equinox.internal.p2.engine.Engine.perform(Engine.java:44)
at org.eclipse.equinox.internal.provisional.p2.director.PlanExecutionHelper.executePlan(PlanExecutionHelper.java:41) at org.eclipse.equinox.internal.provisional.p2.director.PlanExecutionHelper.executePlan(PlanExecutionHelper.java:23) at org.eclipse.equinox.internal.p2.director.app.DirectorApplication.executePlan(DirectorApplication.java:767) at org.eclipse.equinox.internal.p2.director.app.DirectorApplication.planAndExecute(DirectorApplication.java:760) at org.eclipse.equinox.internal.p2.director.app.DirectorApplication.performProvisioningActions(DirectorApplication.java:747) at org.eclipse.equinox.internal.p2.director.app.DirectorApplication.run(DirectorApplication.java:1040) at org.eclipse.tycho.p2.tools.director.DirectorApplicationWrapper$DirectorApplicationWrapperCommand.execute(DirectorApplicationWrapper.java:43) at org.eclipse.tycho.plugins.p2.director.DirectorMojo.execute(DirectorMojo.java:116) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
	at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)


Back to the top