Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 368091

Summary: PDE Build doesn't respect rootfile permissions in mirrored features
Product: [Eclipse Project] PDE Reporter: Ed Lott <edl>
Component: BuildAssignee: pde-build-inbox <pde-build-inbox>
Status: RESOLVED WONTFIX QA Contact:
Severity: normal    
Priority: P3    
Version: 4.2   
Target Milestone: ---   
Hardware: Other   
OS: Linux   
Whiteboard:

Description Ed Lott CLA 2012-01-07 17:55:54 EST
Build Identifier: 20110615-0604

I have an application that contains 2 features:

featureapp - This is a product plugin.  It changes with each build.
featurelib - This feature contains library plugins and root files (executibles).  It seldom changes.

When I perform a 'full-build', I build featureapp and featurelib from source.  The 'assemble.org.eclipse.pde.build.container.feature.linux.gtk.x86_64.xml' file is generated, containing the following correct snippet which builds the archive:

<target name="assemble.archive" depends="assemble.archive.condition" unless="assemble.archive.condition">
	<antcall target="customAssembly">
		<param name="rootFolder" value="${eclipse.base}/linux.gtk.x86_64/${collectingFolder}"/>
		<param name="customTarget" value="pre.archive"/>
	</antcall>
	<zip destfile="${archiveFullPath}" filesonly="false" whenempty="skip" update="true">
		<zipfileset dir="${eclipse.base}" includes="**/**" excludes="bin/dot_static,libcairo-swt.so,${launcherName}" prefix="${archivePrefix}"			/>
		<zipfileset file="${eclipse.base}/bin/dot_static" fullpath="${archivePrefix}/bin/dot_static" filemode="755"			/>
		<zipfileset file="${eclipse.base}/libcairo-swt.so" fullpath="${archivePrefix}/libcairo-swt.so" filemode="755"			/>
		<zipfileset file="${eclipse.base}/${launcherName}" fullpath="${archivePrefix}/${launcherName}" filemode="755"			/>
	</zip>
</target>

(Note: the code you see concerning 'dot_static' comes from the following spec in build.properties:  'root.linux.gtk.x86_64.permissions.755=bin/dot_static')

When I perform a 'partial-build', I rebuild featureapp from source, but mirror the last version of featurelib from my update site and compile/build against it (repoBaseLocation,transformedRepoLocation).  The 'assemble.org.eclipse.pde.build.container.feature.linux.gtk.x86_64.xml' has the following errant code:

<target name="assemble.archive" depends="assemble.archive.condition" unless="assemble.archive.condition">
	<antcall target="customAssembly">
		<param name="rootFolder" value="${eclipse.base}/linux.gtk.x86_64/${collectingFolder}"/>
		<param name="customTarget" value="pre.archive"/>
	</antcall>
	<zip destfile="${archiveFullPath}" filesonly="false" whenempty="skip" update="true">
		<zipfileset dir="${eclipse.base}" includes="**/**" excludes="libcairo-swt.so,${launcherName}" prefix="${archivePrefix}"			/>
		<zipfileset file="${eclipse.base}/libcairo-swt.so" fullpath="${archivePrefix}/libcairo-swt.so" filemode="755"			/>
		<zipfileset file="${eclipse.base}/${launcherName}" fullpath="${archivePrefix}/${launcherName}" filemode="755"			/>
	</zip>
</target>

(Note:  There's no reference to 'dot_static'.  In this scenario, the p2 information for the root files is completely ignored).

Summary:

The code that generates 'assemble.org.eclipse.pde.build.container.feature.linux.gtk.x86_64.xml' doesn't look at p2 root file information when it works with a 'mirrored' feature, but does the right thing if it's building the feature from source.

Workaround:

Add a 'customAssembly.xml' script, adding logic to 'pre.archive' so that it runs the <zip> task the same way it runs when featurelib is built from source.

This is brittle (changing build.properties in featurelib requires changing this source as well).

Reproducible: Always

Steps to Reproduce:
1.Create 2 features, one that's an app and the other that has root files.
2.Build both from source and setup an update site.
3.Build again, mirroring the feature with root files.
Comment 1 Lars Vogel CLA 2018-12-03 09:03:29 EST
Currently we are not actively enhancing PDE build anymore. Therefore, I close this bug as WONTFIX. 

Please reopen, if you plan to provide a fix.