Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 368091 - PDE Build doesn't respect rootfile permissions in mirrored features
Summary: PDE Build doesn't respect rootfile permissions in mirrored features
Status: RESOLVED WONTFIX
Alias: None
Product: PDE
Classification: Eclipse Project
Component: Build (show other bugs)
Version: 4.2   Edit
Hardware: Other Linux
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: pde-build-inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-01-07 17:55 EST by Ed Lott CLA
Modified: 2018-12-03 09:03 EST (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
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.