| Summary: | PDE Build doesn't respect rootfile permissions in mirrored features | ||
|---|---|---|---|
| Product: | [Eclipse Project] PDE | Reporter: | Ed Lott <edl> |
| Component: | Build | Assignee: | 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: | |||
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. |
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.